我现在在&自从我将应用程序部署到heroku以来的过去几天。它发生在我开始使用unicorn作为服务器之前以及之后。我有时可以使用heroku run rake db:migrate
然后使用heroku restart
将其重新启动并运行,但这只会将其修复几个小时并再次中断。至于网页,它说"应用程序错误"。日志不是很有用,但每次出现此错误时都会说出来:
[2014-10-27T21:13:31.675956 #2] ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing
[2014-10-27T21:13:31.731646 #14] INFO -- : worker=1 ready
[2014-10-27T21:13:31.694690 #2] ERROR -- : reaped #<Process::Status: pid 8 SIGKILL (signal 9)> worker=1
at=error code=H13 desc="Connection closed without response" method=GET
我只是使用heroku的免费版本,我想确保它在升级之前有效,但这是我此时唯一的选择吗?
此外,我可以使用rails server
或foreman start
在本地完美地运行此功能。
答案 0 :(得分:5)
Heroku文档说this about H13:
H13 - 连接无响应
当web dyno中的进程接受连接但是然后关闭套接字而不向其写任何内容时,抛出此错误。
可能发生这种情况的一个示例是,Unicorn Web服务器配置的超时时间短于30秒,并且在超时发生之前工作人员尚未处理请求。在这种情况下,Unicorn会在写入任何数据之前关闭连接,从而生成H13。
有几个排队,你有一个关于15s后进程超时的错误:
ERROR -- : worker=1 PID:8 timeout (16s > 15s), killing
Heroku帮助有一个关于timeout settings的部分:
根据您的语言,您可以在应用服务器级别设置超时。一个例子是Ruby的独角兽。在Unicorn中,您可以像
config/unicorn.rb
这样设置超时:
timeout 15
一旦Unicorn开始处理请求,计时器将开始,如果超过15秒,则主进程将向工作人员发送SIGKILL但不会引发异常。
匹配日志中的错误消息。我调查一下。