【IIS】503-服务不可用:最大并发连接数与应用程序池的队列长度的关系
|
admin
2014年1月30日 0:2
本文热度 24458
|
我测试了下,不管队列如何设(设大或设小),只有和只要超出最大并发连接数时,才(就)出现503-服务不可用错误。
有了解原因的高手请帮忙解决。
该文章在 2014/1/30 0:04:03 编辑过
| |
全部评论17 |
|
admin
2014年1月30日 0:3
最大并发连接数是IIS可以同时最多处理多少个连接请求。
队列长度任是指何给定时间可在队列中等待的应用程序池请求的最大数量。如果达到此限制,则所有新请求都将被拒绝,而且用户将收到错误消息“503 – 服务不可用”。默认情况下,IIS 将队列长度设置为 1,000 个请求。该默认值可能太低,因为如果队列长度为 1,000,Communicator Web Access(2007 R2 发行版)将只能处理大约 650 个并发用户,此后将开始拒绝新用户。 该评论在 2014/1/30 0:03:20 编辑过
|
|
admin
2014年1月30日 0:5
我也知道这个意思,只是昨天在做测试的时候,我把本机的iis连接设置成10个了,队列设置成20个,然后我在程序中新起了30个线程模拟请求,结果除了是个正常返回值,剩下的20个都返回503了,所以懵了。。。 该评论在 2014/1/30 0:05:00 编辑过
|
|
admin
2014年1月30日 0:5
iis连接设置成10个,队列设置成20个,程序中新起30个线程模拟请求
结果基本跟下面差不多,每次都只成功10个
Thread:1次:hello--请求响应:11毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:44毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:44毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:44毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:9毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:45毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:75毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:44毫秒--<OK>-<OK>
Thread:1次:hello--请求响应:75毫秒--<OK>-<OK>
Thread:1次:--请求响应:134毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:134毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:133毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:133毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:133毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:hello--请求响应:79毫秒--<OK>-<OK>
Thread:1次:--请求响应:133毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:132毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:135毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:135毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:131毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:135毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:131毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:132毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:132毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:134毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:134毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:154毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:155毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:154毫秒--远程服务器返回错误: (503) 服务器不可用。
Thread:1次:--请求响应:154毫秒--远程服务器返回错误: (503) 服务器不可用。 该评论在 2014/1/30 0:05:18 编辑过
|
|
admin
2014年1月30日 0:5
最大并发连接数与应用程序池的队列长度应该有关系吗?
最大并发连接数 是连接数
程序池的队列长度 是Request. 该评论在 2014/1/30 0:05:38 编辑过
|
|
admin
2014年1月30日 0:5
引用 8 楼 的回复:
最大并发连接数与应用程序池的队列长度应该有关系吗?
最大并发连接数 是连接数
程序池的队列长度 是Request. 最大并发连接数难道不是同时允许的Request数 该评论在 2014/1/30 0:05:49 编辑过
|
|
admin
2014年1月30日 0:6
一个是并发数,一个是等待数。
等待数跟超时时间有关系,跟并发数关系不是很密切。 该评论在 2014/1/30 0:06:09 编辑过
|
|
admin
2014年1月30日 0:6
Queue是那个访问了还没处理完的数量
并发是同时进来的数量限制。
关系不是很大。
如果你每进来一个访问,就sleep住,这时候会增加Queue的数量的。 该评论在 2014/1/30 0:06:21 编辑过
|
|
admin
2014年1月30日 0:6
引用 11 楼 的回复:
Queue是那个访问了还没处理完的数量
并发是同时进来的数量限制。
关系不是很大。
如果你每进来一个访问,就sleep住,这时候会增加Queue的数量的。 有道理,但是我实测的时候,并发数设为:20,队列长度设为:10
将每一个访问都sleep住,你猜怎么样,直道21个才503
这是怎么回事呢 该评论在 2014/1/30 0:06:35 编辑过
|
|
admin
2014年1月30日 0:6
引用 13 楼 的回复:
引用 11 楼 的回复:
有道理,但是我实测的时候,并发数设为:20,队列长度设为:10
将每一个访问都sleep住,你猜怎么样,直道21个才503
这是怎么回事呢
不好意思,我的系统是英文的,没对应上。我用英文名称写这里吧。
那个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里面的任务执行完。 该评论在 2014/1/30 0:06:52 编辑过
|
|
admin
2014年1月30日 0:7
谢谢你的回复,名词对应正确:)
这么说Queue Length这个值是指同时执行的线程数,超出部分都在Queue中等待,并且这个Queue是没有限制的.可以这样理解吗 该评论在 2014/1/30 0:07:08 编辑过
|