4

LogEntries から定期的に発生するこれらのエラーが心配する価値があるかどうかを把握しようとしています。Heroku で Rails API と通信する iPhone アプリがあります。HireFire を使用して、アプリケーションが必要とする dyno とワーカーの数を自動的に増減します。

これらのエラーは、dyno のスケールダウンと、その dyno を呼び出す何かが原因で発生しているため、H13 エラーが発生していると推測されます。もしそうなら、これを止める方法はありますか?ユーザーのリクエストは、もはや存在しない dyno には送られませんか?

コンテキストで取得した最も一般的なログは次のとおりです。

1.

2012-10-18 10:01:15.170 209 <13>1 2012-10-18T10:01:14+00:00 app web.1 - - Started GET "/hirefireapp/xxxxxxxxxxxxxxxx/info" for 23.22.73.241 at Thu Oct 18 03:01:14 -0700 2012
2012-10-18 10:01:15.170 162 <13>1 2012-10-18T10:01:14+00:00 app web.1 - - cache: [GET /hirefireapp/xxxxxxxxxxxxxxxx/info] miss
2012-10-18 10:01:22.147 146 <13>1 2012-10-18T10:01:22+00:00 app web.2 - - Connected to NewRelic Service at collector-2.newrelic.com:80
2012-10-18 10:01:22.308 217 <13>1 2012-10-18T10:01:22+00:00 app web.2 - - ** [NewRelic][10/18/12 03:01:22 -0700 xxxxxxxxxxxxxxxx (2)] INFO : Reporting performance data every 60 seconds.
2012-10-18 10:01:38.118 86 <13>1 2012-10-18T10:01:38+00:00 app web.2 - -
2012-10-18 10:01:38.212 86 <13>1 2012-10-18T10:01:38+00:00 app web.2 - -
2012-10-18 10:01:38.212 154 <13>1 2012-10-18T10:01:38+00:00 app web.2 - - Started GET "/" for 204.93.223.151 at Thu Oct 18 03:01:38 -0700 2012
2012-10-18 10:01:38.212 128 <13>1 2012-10-18T10:01:38+00:00 app web.2 - -   Processing by CmsController#index as */*
2012-10-18 10:01:38.212 148 <13>1 2012-10-18T10:01:38+00:00 app web.2 - - Rendered cms/index.html.erb within layouts/application (4.8ms)
2012-10-18 10:01:41.291 124 <40>1 2012-10-18T10:01:41+00:00 heroku web.2 - - Stopping all processes with SIGTERM
2012-10-18 10:01:42.243 217 <158>1 2012-10-18T10:01:42+00:00 heroku router - - Error H13 (Connection closed without response) -> GET my-api.heroku.com/ dyno=web.2 queue= wait= service= status=503 bytes=

2.

2012-10-16 17:31:25.184 189 <13>1 2012-10-16T17:31:25+00:00 app web.2 - - ** [NewRelic][10/16/12 10:31:25 -0700 (2)] INFO : Dispatcher: thin
2012-10-16 17:31:25.184 197 <13>1 2012-10-16T17:31:25+00:00 app web.2 - - ** [NewRelic][10/16/12 10:31:25 -0700 (2)] INFO : Application: my-api
2012-10-16 17:31:25.184 220 <13>1 2012-10-16T17:31:25+00:00 app web.2 - - ** [NewRelic][10/16/12 10:31:25 -0700 (2)] INFO : New Relic Ruby Agent 3.3.1 Initialized: pid = 2
2012-10-16 17:31:25.585 265 <13>1 2012-10-16T17:31:25+00:00 app web.2 - - ** [NewRelic][10/16/12 10:31:25 -0700 (2)] INFO : NewRelic::Agent::Samplers::DelayedJobLockSampler sampler not available: No DJ worker present
2012-10-16 17:31:37.068 217 <13>1 2012-10-16T17:31:37+00:00 app web.2 - - ** [NewRelic][10/16/12 10:31:36 -0700 (2)] INFO : Reporting performance data every 60 seconds.
2012-10-16 17:31:39.786 86 <13>1 2012-10-16T17:31:39+00:00 app web.2 - -
2012-10-16 17:31:39.884 86 <13>1 2012-10-16T17:31:39+00:00 app web.2 - -
2012-10-16 17:31:39.884 154 <13>1 2012-10-16T17:31:39+00:00 app web.2 - - Started GET "/" for xxx.xx.xxx.xxx at Tue Oct 16 10:31:39 -0700 2012
2012-10-16 17:31:39.884 128 <13>1 2012-10-16T17:31:39+00:00 app web.2 - -   Processing by CmsController#index as */*
2012-10-16 17:31:39.981 149 <13>1 2012-10-16T17:31:39+00:00 app web.2 - - Rendered cms/index.html.erb within layouts/application (18.1ms)
2012-10-16 17:31:46.082 217 <158>1 2012-10-16T17:31:46+00:00 heroku router - - Error H13 (Connection closed without response) -> GET my-api.heroku.com/ dyno=web.2 queue= wait= service= status=503 bytes=

どんなアドバイスでも大歓迎です!

ありがとうピート

4

1 に答える 1

11

H13の問題の潜在的な原因の1つは、ラックのキースペースです。Rackは、HTTPリクエストで非常に大きなパラメータキーを送信することにより、潜在的な悪意のある攻撃に対する保護を追加します。

Rack Utilsは、キースペースに65536の制限を設定します。これは、大きなパラメーターセットを使用してHTTPリクエストを送信する場合は十分な大きさではない可能性があります。

Rails初期化ファイルに以下を追加することで、この制限を変更できます。

if Rack::Utils.respond_to?("key_space_limit=")
  Rack::Utils.key_space_limit = 262144
end

この図(4x標準)はH13の問題を修正するのに十分な大きさであることがわかりましたが、個人的な要件に基づいてさまざまな設定をテストする必要がある場合があります。

これは特定のH13の問題の原因ではないかもしれませんが、考えられる解決策として確認する価値があります。

于 2012-10-18T12:08:29.257 に答える