fasionchan

读万卷书,行万里路,品万味肴,撸万行码。

HTTP压力测试潜在问题若干

| Comments

首先,用ulimit -n看看是不是文件描述符设置过小而被打满:发现设置值是65536,这是10000个并发不可能用满的。当然,大部分服务器上都是采用默认配置1024,这时就是罪魁祸首了。

backlog太小

各种可能的原因都查了查了,最后发现是由于底层套接字调用listenbacklog参数太小造成的!listen系统调用的作用是使TCP套接字进行监听状态,backlog是内核维持请求连接队列的个数限制(不包括已经被accept的连接)。我要测试的WEB接口是用基于tornado框架的,绑定端口时backlog默认参数是128,很快就被10000个请求给压满了,这就是ab各种超时的主要原因!调大这个参数后问题就解决了~

Comments