4

我在 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` 启动进程
4

1 回答 1

3

如果这实际上是由渲染 application.js 引起的,您可能设法关闭了资产预编译,因为否则该文件将被预编译并且只是一个几乎不会超时的服务文件。

检查资产预编译并重新启用它,如果它实际上被禁用。

如果不是这种情况,文件可能非常大,您应该重新考虑是否真的使用了 javascripts 资产文件夹中的所有内容。

于 2013-10-21T22:09:53.840 回答