Apacheプロキシタイムアウト


18

Apache 2.2 error_logの次のメッセージで何が起こっているのか理解しようとしています。

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.asp

mod_proxyでApache 2.2を実行しています。このApacheは、httpd.confの5分のTimeOut値に関連するリクエストをタイムアウトにしていますか?(つまり、5分間でリモートサーバーからの応答を受信しません。)または、これは単に、接続を処理できないというリモートサーバーからの応答ですか?

このエラーが発生する頃、ApacheはMaxClientsをすぐに使い果たします。

プロキシエントリの簡単な例:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com

回答:


28

ProxyPassディレクティブのタイムアウトを増やします。

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

タイムアウト値は秒単位です。


6
ProxyPassタイムアウト引数をまだ定義していない場合は、グローバルTimeout値が使用されます。httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeoutおよびhttpd.apache.org/docs/2.2/mod/coreを
同期

また、エラーが発生しました指定されたタイムアウトの期限が切れました.... ProxyRequestsがオフになっているので、これは関連していますか?私は......増加のタイムアウトでそれをしなければならない
アシシュKarpe

5

サーバーのhttps://super-load1-ga.example.com応答に時間がかかりすぎているようです。

そのシナリオでは、Apacheプロセスがそこにあるだけであれば、Apacheプロセスはそれを待ちます。そのプロセスは基本的にブロックされています。つまり、他に何もできません。十分に早くタイムアウトしなければ、Apacheプロセスを使い果たし、MaxClientsをヒットすることになります。

super-load1-ga.test.comサイトにログを作成して、リクエストの所要時間を確認してください。リクエストには時間が経過している必要があります。

ProxyPass接続のタイムアウトを潜在的に短縮できます。

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers


素晴らしい反応をありがとうPhil。だから、これはメインのhttpd.conf TimeOut値5分に達し、Apacheがセッションをタイムアウトしていると思いますか?プロキシ固有のタイムアウトが設定されていないため、デフォルトになります。プロキシタイムアウトの提案で、ProxyTimeout変数またはProxySetコマンドを使用する必要があると思いますか?(ProxySet connectiontimeout = 5 timeout = 30)
roacha

2

質問に答えるために、はい、プロキシモードのApache2 httpdは、Apache2 httpdがタイムアウトしたときにそのエラーメッセージをログに記録します。プロキシモードでApache2 httpdに接続されているサーバーが原因である場合、別のメッセージが表示されます。

メッセージには複数の部分The timeout specified has expiredがあります。APR_TIMEUPエラーコードに相当するテキストです。以下を参照してください。

srclib / apr / misc / unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

それproxy: error reading status line from remote server super-load1-ga.test.comから

modules / proxy / mod_proxy_http.c

ログレベルをAPLOG_DEBUGに上げると、追加のメッセージproxy: read timeoutも表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.