我的请求时间超过30秒而且会中断。
这是什么解决方案?我不确定我是否会添加更多的dynos这将起作用。
由于
答案 0 :(得分:7)
您可能应该看到the Heroku devcenter article,因为这些信息会更有帮助,这里有一个小摘要:
回答超时问题:
Cedar支持长轮询和流式响应。您的应用程序有一个最初的30秒窗口,以单个字节响应客户端。发送每个字节后(从客户端收到或由您的应用程序发送),您重置一个滚动的55秒窗口。如果在55秒窗口期间没有数据发送,则终止连接。
(也就是说,如果你有Cedar而不是Aspen或Bamboo,你可以每30秒左右发送一个字节来欺骗系统。它可能有效。)
回答你的dynos问题:
如果遇到请求超时,则额外的并发性无济于事。你可以将你的dynos调到最大,你仍然会得到一个请求超时,因为它是一个单一的请求,无法在正确的时间内提供服务。额外的dynos会增加你的并发性,而不是你请求的速度。
(也就是说,不要费心添加更多的dynos。)
在request timeouts上: 如果你正在做一些大事,请检查你的代码是否有无限循环:
如果是这样,您应该将这个繁重的工作移到后台作业中,后台作业可以从您的Web请求异步运行。有关详细信息,请参阅Queueing。