Heroku:我有一个超过30秒的请求,它会中断

时间:2011-06-26 17:28:21

标签: ruby-on-rails-3 heroku

我的请求时间超过30秒而且会中断。

这是什么解决方案?我不确定我是否会添加更多的dynos这将起作用。

由于

1 个答案:

答案 0 :(得分:7)

您可能应该看到the Heroku devcenter article,因为这些信息会更有帮助,这里有一个小摘要:

回答超时问题:

  

Cedar支持长轮询和流式响应。您的应用程序有一个最初的30秒窗口,以单个字节响应客户端。发送每个字节后(从客户端收到或由您的应用程序发送),您重置一个滚动的55秒窗口。如果在55秒窗口期间没有数据发送,则终止连接。

(也就是说,如果你有Cedar而不是Aspen或Bamboo,你可以每30秒左右发送一个字节来欺骗系统。它可能有效。)

回答你的dynos问题:

  

如果遇到请求超时,则额外的并发性无济于事。你可以将你的dynos调到最大,你仍然会得到一个请求超时,因为它是一个单一的请求,无法在正确的时间内提供服务。额外的dynos会增加你的并发性,而不是你请求的速度。

(也就是说,不要费心添加更多的dynos。)

request timeouts上: 如果你正在做一些大事,请检查你的代码是否有无限循环:

  

如果是这样,您应该将这个繁重的工作移到后台作业中,后台作业可以从您的Web请求异步运行。有关详细信息,请参阅Queueing