24

問題の説明 - 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が見つかりました

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

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

30 秒で十分だと思ったので、最初に値 30 を試しました。しかし、デフォルト値が 300 秒であっても、引き続きログにエラーが記録されます。私はtail -fこのテキストを書いていたときにそうしましたが、数分で 10 行を超えました。

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

4

4 に答える 4

14

この件に関するいくつかの研究の後、私は次の答えにたどり着きました。これは主任開発者によって提供されたものであり、主題をよく説明していると思います。

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

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

そうしないと、ほんの一握りの人が私たちのサーバーを乗っ取り、他の人が接続できなくなる可能性があります.

ほとんどの場合、これらのエラーはエクスプロイトを探しているシステムから発生しており、telnet セッションを開いてそのままにしておくことで再現できます。

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

Apache 1.3 の時代には、このエラーは一般的でしたが、その後 2.2 が出てきて、何人の人がポートだけを開いたままにしているかについてのアイデアを与えてくれるので、十分な数の返却を求めるまで削除されました。実際のリソースを要求しないなど。

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

于 2013-03-11T07:01:44.583 に答える