私の質問は、次のようなものですが、少し異なる状況下で起こっています。Heroku/Unicornの定期的なレールエラー - 「実行期限切れ」、ActionView :: Template :: Error
Rails: execution expired on time_zone_select
私のセットアップは次のとおりです。3.2.13
- のRails 4.6.2
- Mongoid 3.0.22
- 原付1.4.2
ヘロク・シーダーで走る。 MongoDBはMongoLabでホストされています。
エラーはバッチで発生し、Herokuプロセスの再起動によって解決されることがよくあります。最初は通常以下のものです:
An ActionView::Template::Error occurred in [controller]#[action]:
execution expired
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/sockets/connectable.rb:46:in `read'
次はスタックトレースの最上位ビットです。必要に応じてさらにお楽しみください!答えはタイムアウトを増やすことであるならば、それは大丈夫です -
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/sockets/connectable.rb:46:in `read'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/sockets/connectable.rb:46:in `block in read'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/sockets/connectable.rb:118:in `handle_socket_errors'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/sockets/connectable.rb:46:in `read'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:177:in `read_data'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:99:in `block in read'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:202:in `with_connection'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:97:in `read'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/protocol/query.rb:163:in `receive_replies'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:135:in `block in receive_replies'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:134:in `map'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/connection.rb:134:in `receive_replies'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:553:in `block (2 levels) in flush'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:129:in `ensure_connected'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:551:in `block in flush'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:566:in `logging'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:550:in `flush'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:539:in `process'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/node.rb:349:in `query'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/cursor.rb:138:in `block in load_docs'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/session/context.rb:105:in `block in with_node'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/cluster.rb:250:in `with_secondary'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/session/context.rb:104:in `with_node'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/cursor.rb:137:in `load_docs'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/cursor.rb:25:in `each'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/query.rb:76:in `each'
vendor/bundle/ruby/1.9.1/gems/moped-1.4.2/lib/moped/query.rb:76:in `each'
vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.22/lib/mongoid/contextual/mongo.rb:132:in `block in each'
vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.22/lib/mongoid/contextual/mongo.rb:556:in `selecting'
vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.22/lib/mongoid/contextual/mongo.rb:131:in `each'
vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.22/lib/mongoid/contextual.rb:18:in `each'
ラック::タイムアウトは10秒(私はそれは私が読んで、キャッシングのチュートリアルのいずれかによって示唆されたと考えている)のために設定されています。しかし、これはクエリの問題が遅いのではないかと思います。この現象は、Unicornのプロセスのうち、ハングアップするプロセスの1つであることを示しているようです(これがpsの再起動が原因です)。
ご意見やご要望があれば幸いです。
をコミットして展開し、その後、バンドル、あなたのGemfileに1.9.3にルビーのバージョンを設定してみてください。 – nont
これは問題の解決策ではありませんが、若干の回避策(とはいえ必ずしも良いことではありません) - 私はPumaのためにUnicornを交換し、Herokuの2つのDynosにぶつかり、問題は大きな要因で減少しました。しかし、まだ解決されていないし、私はまだ一握りの '実行期限切れ'エラーを1日に取得しています(これは一時間から数えています)。私の欠点は、これがMongoid/MongoLabの問題であると言うことです - 遅いクエリ応答か、非ローカルデータベースとのオープンな接続を吊るします。 – nlh
更新#2:ユニコーンの代わりに2dynos&pumaを使っても、まだまだ多くのことが起こっています。一口。 – nlh