我正在运行一个简单的Web应用程序,该应用程序为每个请求使用一些Web服务,并且我发现服务器会暂时使用的请求(综合599错误)即使其他服务始终响应迅速(我已经验证了)。
这些是我收到的错误消息:
HTTP 599: Connection timed out after 7005 milliseconds
(连接时计时)
HTTP 599: Operation timed out after 5049 milliseconds with 0 out of -1 bytes received
(在接收数据之前超时)
HTTP 599: Operation timed out after 10005 milliseconds with 11197 out of 13047 bytes received
(与数据部分传输的时间计时)
我已经能够在Amazon EC2 Mini实例和MacBook Pro(i7)中在两个不同的环境中复制它。在EC2实例中,超时开始发生的时间很少2个并发客户提出请求,MacBook坚持到8个并发客户端,然后也开始显示超时。
我已经尝试了一些事情,例如更新龙卷风版本(2.2、2.3.1、2.4.1和3.1.1,如果我记得很好),将基本的asynchttpclient实现从默认的简单一个变为基于pycurl的默认值增加异步客户端的数量(200),但是错误仍在发生。
我不确定我可能做错了什么,因为这看起来不像龙卷风完全应交付的承诺可伸缩性...
有任何提示?
update
只是为了记录,我们在异步回调中使用了memcache
,但是库不是异步本身。我替换为:https://github.com/dpnova/tornado-memcache/
这是我认为的最大问题,尽管我们仍会不时获得599。
听起来您的代码可能会阻止事件循环的某个位置(对于整数数秒,您是否有任何电话。尝试使用ioloop.set_blocking_log_threshold查找被阻塞事件循环的位置。