我在 Heroku 上有一个带有 Unicorn 服务器的 Rails 网站。我偶尔会收到类似以下错误的通知:
ActionView::Template::Error: 执行已过期
(在 /app/app/assets/javascripts/application.js 中)
这是我的 application.js 文件:
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree
//= require jquery.qtip.js
错误日志没有清楚地显示导致此类错误的原因。例如,最近的日志如下所示。什么可能导致此类错误,或者我应该如何诊断它们?
独角兽配置:
# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true
#...
捕捉超时:
#timeout.rb
Rack::Timeout.timeout = 13
日志:
app/web.2: 开始 GET "/articles/20" for ... heroku/web.1:骑自行车 heroku/web.1:使用 SIGTERM 停止所有进程 app/web.1:独角兽工人拦截 TERM 并且什么都不做。等待master发送QUIT Unicorn worker拦截TERM并且什么都不做。等待master发送QUIT app/web.1:独角兽工人拦截 TERM 并且什么都不做。等待master发送QUIT app/web.1:独角兽大师拦截 TERM 并发送自己 QUIT 代替 heroku/router: at=info method=GET path=/articles/20 host=... dyno=web.2 connect=1ms service=79ms status=200 bytes=8123 app/web.1: I, INFO -- : reaped #worker=0 app/web.1: I, INFO -- : reaped #worker=2 app/web.1: I, INFO -- : reaped #worker=1 app/web.1: I, INFO -- : master 完成 heroku/web.1:错误 R12(退出超时)-> 至少一个进程在 SIGTERM 的 10 秒内未能退出 heroku/web.1:使用 SIGKILL 停止剩余进程 heroku/web.1:进程以状态 137 退出 heroku/web.1:状态从向上变为向下 heroku/web.1:状态从下降到开始 heroku/web.1:使用命令 `bundle exec unicorn -p 14131 -c ./config/unicorn.rb` 启动进程