0

RailsサーバーにGETリクエストを送信すると、応答に時間がかかりすぎます(29分)

以下はログスニペットです

ログには、コードにエラーがあると書かれていますが、問題ありませんが、応答に時間がかかるのはなぜですか(1723579ミリ秒)このような動作の理由を見つけることができません。以前は、サーバーが正常に機能していた場合、このjsリクエストは応答するのに9ミリ秒しかかかりませんでした。しかし、突然それはこのように振る舞い始めました。このような予期しない動作の根本原因を追跡するために、アプリケーションをどのようにデバッグする必要がありますか。

        Started GET "/my-server/jobs/workers?_=1356363515400" for 27*.*.*.* at 2012-12-24 21:08:35 +0530
    ActionView::Template::Error ():
             1: <% @jobs.each do |job| %>
             2:   $('#cron_<%= job.id %>').attr('data-content', '<%= distance_of_time_in_words_to_now(job.next_fire_info, true) %>');
             3: <% end %>
             4: 
             5: <% @workers.each do |worker| %>
           app/models/job.rb:16:in `next_fire_info'
           app/views/jobs/workers.js.erb:2:in `block in _app_views_jobs_workers_js_erb__101155230_81985760'
           app/views/jobs/workers.js.erb:1:in `_app_views_jobs_workers_js_erb__101155230_81985760'


 Rendered jobs/workers.js.erb (1718348.7ms)

 Completed 500 Internal Server Error in 1723579ms

Rails 3.1.3、Ruby 1.9.3p194、MongoDBバージョンv2.2.0、pdfileバージョン4.5、2 GB RAMを備えた32ビットUbuntu(12.04)を使用しています

4

3 に答える 3

0

3.1.5より前のバージョンのrails3.1にはバグがあり、ビューから例外が発生した場合、railsが例外メッセージを生成するのに非常に長い時間がかかります。

3.1.5に更新できない場合、修正は非常に簡単です(修正するコミットを参照してください)-モンキーパッチ検査を行う必要があります:

module ActionDispatch
    module Routing
        module RouteSet
          alias to_s inspect 
        end
    end
end

私はこれをイニシャライザーにダンプしていました。私が試したことはありませんが、これを行うと主張するgem(safe_inspect)もあります。

于 2012-12-26T09:35:19.273 に答える
0

ついに私は応答するのにとても長い時間がかかる理由を見つけました。ワーカーはcron式に基づいて定期的に実行されています。この特定の問題の根本的な原因は、ジョブの1つのcron式が誤って入力されたことです。そのため、「distance_of_time_in_words_to_now」の実行時に時間がかかりすぎました。

于 2013-01-02T04:43:32.777 に答える
0

私も同様の問題を抱えていましたが、これは認証が原因でしたので、将来誰かが同じ問題を抱えている場合の記録です。サーバーはユーザーを許可せず、制限されているページなどにリダイレクトしました。

于 2014-06-16T13:11:32.137 に答える