您的位置:首页 > 理论基础 > 计算机网络

tornado多并发下http client connection timed out 分析及解决

2017-05-31 15:58 99 查看
tornado的http client有个max_clients设置,用来设置使用该client的最大并发请求数量。

请求的timeout有两个设置参数,connect_timeout request_timeout 单位秒

前者设置连接目标主机超时时间,后者设置请求下载超时时间

实际使用中设置 connect_timeout=2 发现,有很多connection timed out ,而且目标都是正常可访问的

getting many HTTP 599 errors for valid urls
Queue
and
Semaphore
example - a parallel web spider
启发

猜测 实际由于connection timeout 从 fetch调用就开始计时,而由于max_clients限制,导致多余请求等待而触发connection timed out 错误。

结果就是connect_timeout参数在并发下并没有达到预期的目的。预期是设置连接目标主机超时时间,结果改时间还包含了等待前面并发完成的时间。

该猜测需要在timeout 错误出现时打印当前并发量来验证。

解决方案:1、如果为了成功获取,去掉timeout,可以尝试增大max_clents。

     2、如果为了connect_timeout 必定达到预期效果,需要借助单独的请求queue和semaphore来控制真正进入connect timeout计时的请求数量小于 max_clients。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: