IIS中最大并发连接数与应用程序池的队列长度的关系

yaazz 2012-04-17 05:24:38
我测试了下,不管队列如何设(设大或设小),只有和只要超出最大并发连接数时,才(就)出现503
有了解原因的高手
...全文
2119 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
dmpray 2012-09-05
  • 打赏
  • 举报
回复
估计是处理的request太快,队列虽然设置成了10,但是队列里却没有满,把队列设置成1试试,并发设置成100.
yaazz 2012-04-19
  • 打赏
  • 举报
回复
我迷惑的是:我的测试结果看不出发生503与队列的长度设置的关系
谢谢大家的回复,此帖揭了,先把分给大家,开新帖再讨论
宝_爸 2012-04-19
  • 打赏
  • 举报
回复
我觉得Queue和线程没有关系
这是帮助里对于Request queue limit的解释
Request queue limit

Select to configure IIS to monitor the number of requests for a designated application pool queue before queuing a new request.
Application pool queue length limits prevent large numbers of requests from queuing up and overloading your server. If adding the new request to the queue exceeds the capacity of the queue, the server rejects the request and sends a non-customizable 503-error response to the client.


假如如果有10个连接,每个连接得客户端不停的发request. 但是服务器处理request需要花点时间,服务器就会把处理不过来的request放到Queue里面。因此,如果发request的速度比处理request的速度快很多的话,即使Request queue limit很大也会发生503错误的。
铜臂阿铁木 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 的回复:]

引用 24 楼 的回复:

引用 21 楼 的回复:
最大的超出部分的数量是 Maximum Concurrent connection 减去 Queue Length
不过还是有点疑问:说是超出这个队列长度会返回503,而我们现在的理解是在资源不是问题的情况下,它可以无限制的等待,不存在超出问题
看来我们的理解还是有些问题的

超出后请求不到Application pool资……
[/Quote]

然后被服务器告知,服务不可用。
铜臂阿铁木 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 的回复:]

引用 21 楼 的回复:
最大的超出部分的数量是 Maximum Concurrent connection 减去 Queue Length
不过还是有点疑问:说是超出这个队列长度会返回503,而我们现在的理解是在资源不是问题的情况下,它可以无限制的等待,不存在超出问题
看来我们的理解还是有些问题的
[/Quote]
超出后请求不到Application pool资源。
allen0118 2012-04-19
  • 打赏
  • 举报
回复
应用程序池队列长度调到最大,顶。
yaazz 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]
最大的超出部分的数量是 Maximum Concurrent connection 减去 Queue Length [/Quote]
不过还是有点疑问:说是超出这个队列长度会返回503,而我们现在的理解是在资源不是问题的情况下,它可以无限制的等待,不存在超出问题
看来我们的理解还是有些问题的
CalvinR 2012-04-18
  • 打赏
  • 举报
回复
唉 你们说的俺都不懂 顶帖……
yaazz 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 9 楼 的回复:

最大并发连接数难道不是同时允许的Request数

应该不是。连接应该是类似于Session的东西。
[/Quote]
看我楼上的回复
yaazz 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

Queue是那个访问了还没处理完的数量
并发是同时进来的数量限制。

关系不是很大。

如果你每进来一个访问,就sleep住,这时候会增加Queue的数量的。
[/Quote]
有道理,但是我实测的时候,并发数设为:20,队列长度设为:10
将每一个访问都sleep住,你猜怎么样,直道21个才503
这是怎么回事呢
宝_爸 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]


最大并发连接数难道不是同时允许的Request数
[/Quote]

应该不是。连接应该是类似于Session的东西。
铜臂阿铁木 2012-04-18
  • 打赏
  • 举报
回复
Queue是那个访问了还没处理完的数量
并发是同时进来的数量限制。

关系不是很大。

如果你每进来一个访问,就sleep住,这时候会增加Queue的数量的。
铜臂阿铁木 2012-04-18
  • 打赏
  • 举报
回复
一个是并发数,一个是等待数。
等待数跟超时时间有关系,跟并发数关系不是很密切。
yaazz 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

最大并发连接数与应用程序池的队列长度应该有关系吗?
最大并发连接数 是连接数
程序池的队列长度 是Request.
[/Quote]
最大并发连接数难道不是同时允许的Request数
宝_爸 2012-04-18
  • 打赏
  • 举报
回复
最大并发连接数与应用程序池的队列长度应该有关系吗?
最大并发连接数 是连接数
程序池的队列长度 是Request.
铜臂阿铁木 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 的回复:]

管理器中的这个说明让我有些迷惑:
[queueLength] HTTP.sys 将针对应用程序池排队的最大请求数.如果队列已满,新请求将收到503 "服务不可用"的响应
[/Quote]

呃,微软的技术翻译,比google的翻译还雷人。翻译还不如不翻译呢。
铜臂阿铁木 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

引用 18 楼 的回复:
不好意思,我的系统是英文的,没对应上。我用英文名称写这里吧。
那个Queue Length是在Application Pool里面设置的吧?,应该就是你说的队列长度了,这个值是对应Application Pool能够同时处理的任务队列最大值。是针对w3wp进程说的(相当于,这个进程能开n个Thread来处理请求)

那个Maximum Concurrent C……
[/Quote]

最大的超出部分的数量是 Maximum Concurrent connection 减去 Queue Length
yaazz 2012-04-18
  • 打赏
  • 举报
回复
管理器中的这个说明让我有些迷惑:
[queueLength] HTTP.sys 将针对应用程序池排队的最大请求数.如果队列已满,新请求将收到503 "服务不可用"的响应
yaazz 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
不好意思,我的系统是英文的,没对应上。我用英文名称写这里吧。
那个Queue Length是在Application Pool里面设置的吧?,应该就是你说的队列长度了,这个值是对应Application Pool能够同时处理的任务队列最大值。是针对w3wp进程说的(相当于,这个进程能开n个Thread来处理请求)

那个Maximum Concurrent Connection是在Web Site或者Web.config里面设置的吧?应该就是你说的并发数了,这是说这个website端口能够同时接受住多少个连接,也就是http连接。

你的case里面Maximum Concurrent Connection是20,你当然能够创建20个连接去连,不过同时处理的只有Queue Length那么多。
也就是当Maximum Concurrent Connection是20,QueueLength是10的时候,出现20个请求,那么在同一时间,只有10个是真正运行的,其余的都在等待Queue里面的任务执行完。
[/Quote]
谢谢你的回复,名词对应正确:)
这么说Queue Length这个值是指同时执行的线程数,超出部分都在Queue中等待,并且这个Queue是没有限制的.可以这样理解吗
铜臂阿铁木 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

引用 11 楼 的回复:

有道理,但是我实测的时候,并发数设为:20,队列长度设为:10
将每一个访问都sleep住,你猜怎么样,直道21个才503
这是怎么回事呢
[/Quote]

不好意思,我的系统是英文的,没对应上。我用英文名称写这里吧。
那个Queue Length是在Application Pool里面设置的吧?,应该就是你说的队列长度了,这个值是对应Application Pool能够同时处理的任务队列最大值。是针对w3wp进程说的(相当于,这个进程能开n个Thread来处理请求)

那个Maximum Concurrent Connection是在Web Site或者Web.config里面设置的吧?应该就是你说的并发数了,这是说这个website端口能够同时接受住多少个连接,也就是http连接。

你的case里面Maximum Concurrent Connection是20,你当然能够创建20个连接去连,不过同时处理的只有Queue Length那么多。
也就是当Maximum Concurrent Connection是20,QueueLength是10的时候,出现20个请求,那么在同一时间,只有10个是真正运行的,其余的都在等待Queue里面的任务执行完。

加载更多回复(5)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧