web-dev-qa-db-ja.com

PHPでApacheの「408リクエストタイムアウト」を理解する

問題の説明-Apacheログ

Apacheのログファイルで次のような項目を見つけました。

166.147.68.243 [24/Feb/2013:06:06:25 -0500] 19 web-site.com "-" 408 - "-"

カスタムログ形式と408ここではステータスを表します。ログの形式は次のとおりです。

LogFormat "%h %t %D %V \"%r\" %>s %b \"%{User-agent}i\"" detailed

そして通常、ログファイルの行は次のようになります

184.73.232.108 [26/Feb/2013:08:38:16 -0500] 30677 www.site.com "GET /api/search... HTTP/1.1" 200 205 "Zend_Http_Client"

これが、408エラー行が奇妙に見える理由です。リクエストはログに記録されず、何を最適化すべきかわかりません。

質問

この問題への取り組み方は?どのような追加情報またはログを収集する必要がありますか?問題の原因は何ですか?これはサーバー上で何か問題がありますか?それとも、これは完全にネットワーク接続の問題ですか?

お客様の携帯電話で408エラーが発生したと苦情があったため、この問題に対処します。ログファイルに多くのレコードが見つかりましたが、どうすればよいかわからないことを認めざるを得ません。


私自身の研究

この問題については、すでにいくつか質問があります。しかし、人々はより具体的です。彼らがいくつかの特定のクライアントソフトウェアとスクリプトに関する問題を議論するように。ここで、iPhoneでページを開くときにエラーが発生しました。

たとえば HTTP、408 Request timeout では、POSTの前にGETリクエストを実行することをお勧めします。カスタムクライアントがある場合は、これを行うことができます。しかし、ユーザーのブラウザの動作を制御できません。

推測#1

インターネットを検索して問題を考えたとき、私は見つけた https://serverfault.com/questions/383290/too-many-408-error-codes-in-access-log

Timeout 構成パラメーターを更新してデフォルト値に戻すことをお勧めします。

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

30秒で十分だと思ったので、最初に値30を試しました。 しかし、300秒のデフォルト値でも、ログにエラーが引き続き表示されます。tail -fこのテキストを書いているときに、数分で10行以上を得ました。

私にはこれは完全な解決策には見えません。

16
Victor Smirnov

このテーマについていくつかの研究をした後、私は次の答えに行きました。それは私たちのリード開発者によって提供され、私はそれが主題の良い説明を与えると思います。

これらのエラーは完全に正常です。これらは大きな問題の兆候ではありませんが、Apacheを許可された時間より長く開いたままにしておく通常の接続です。

たとえば、クライアントのクエリがそれらを繰り返し実行すると、Apacheが開いたままになります。 Apacheは彼を適切にシャットダウンすることで対応しました。

そうでなければ、少数の人々が私たちのサーバーを乗っ取って他の誰も接続することを許可しないでしょう。

ほとんどの場合、これらのエラーはエクスプロイトを探しているシステムが原因で発生します。Telnetセッションを開いて開いたままにすると、エラーを再作成できます。

同時に、アクセスログをtail -fすると、X時間(KeepAliveTimeout)以内に同じエラーコードのIPポップアップが表示されます。

Apache 1.3の時代には、このエラーは一般的でしたが、2.2が出て、ポートだけを開いたままにしている人の数がわかるので、返却を要求するのに十分な数になるまで削除されました。実際のリソースなどを要求しない.

元の質問で説明したように、タイムアウトを適切な値に必ず設定することを除いて、ここでは何もすべきではないと思います。

11
Victor Smirnov

Apacheにプロキシが設定されていて、何らかの理由でバックエンドがタイムリーに応答しない場合、同じ408--がログに表示されます。プロキシタイムアウトは個別に構成されているため、Apacheのデフォルトタイムアウトを変更しても、これらのリクエストは何も行われません。

0
M K

実際、Apacheログの408メッセージの多くは、最新のブラウザでの結果のプリフェッチメカニズムです。過去3年間のApacheログを見ると、同じトラフィックで408エラーの量が2倍以上に増加しています。

0
Ron