web-dev-qa-db-ja.com

Apache proxfy_fcgi-リクエストのディスパッチエラー

私はGoogleでクラウドホスティングを行っていますが、正直言って残念ですが、それに挑戦しようとしています、LAMPスタックをVMにインストールし、htdocsに私のウェブサイトを入れました。私のサイトにアクセスすると、request timeoutしかし、時には5分間程度動作します。

Apacheエラーログが表示されると、これが表示されます

075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.185819 2015] [proxy_fcgi:error] [pid 4995:tid 140183521683200] (70007)The timeout specified has expired: [client 162.158.255.169:34198] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:55.487458 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 4995 exit signal Segmentation fault (11)
[Tue Oct 27 18:12:55.787973 2015] [proxy_fcgi:error] [pid 5063:tid 140183530075904] (70007)The timeout specified has expired: [client 199.27.133.137:13151] AH01075: Error dispatching request to : (polling), referer: http://whichtube.com/watch/g9-4dCeFQng/allama-nasir-abbas-jawab-ALi-as-nae-talwar-kayou-na-uthai.html
[Tue Oct 27 18:12:57.542883 2015] [proxy_fcgi:error] [pid 5329:tid 140183521683200] (70007)The timeout specified has expired: [client 173.245.56.198:51348] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:57.976752 2015] [proxy_fcgi:error] [pid 5063:tid 140183479719680] (70007)The timeout specified has expired: [client 173.245.56.198:63779] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:58.993666 2015] [proxy_fcgi:error] [pid 5194:tid 140183496505088] (70007)The timeout specified has expired: [client 162.158.255.141:16226] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:12:59.196701 2015] [proxy_fcgi:error] [pid 5329:tid 140183513290496] (70007)The timeout specified has expired: [client 173.245.56.198:32819] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:01.462039 2015] [proxy_fcgi:error] [pid 5329:tid 140183504897792] (70007)The timeout specified has expired: [client 199.27.128.166:48057] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:07.518999 2015] [proxy_fcgi:error] [pid 5063:tid 140183471326976] (70007)The timeout specified has expired: [client 173.245.56.198:13694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:16.804990 2015] [proxy_fcgi:error] [pid 5261:tid 140183513290496] (70007)The timeout specified has expired: [client 199.27.128.134:28694] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:33.055860 2015] [proxy_fcgi:error] [pid 5328:tid 140183236331264] (70007)The timeout specified has expired: [client 39.41.139.220:52154] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.391361 2015] [proxy_fcgi:error] [pid 5063:tid 140183521683200] (70007)The timeout specified has expired: [client 39.41.139.220:52029] AH01075: Error dispatching request to : (polling)
[Tue Oct 27 18:13:57.552542 2015] [core:notice] [pid 2953:tid 140183785137920] AH00052: child pid 5063 exit signal Segmentation fault (11)

私のウェブサイトはPHPで、ディレクトリのアクセス許可以外は何も変更していません。何か足りないものはありますか?

12
require_once

私もこの問題を抱えていました。コード内でハードコード部分と使用できない別のサーバーへの接続を探したい場合があります。 (たとえば、オンラインでアクセスできないローカルIP)。

私の場合、サーバーのphp-fpm.logをチェックしましたが、アプリケーションが古いサーバー(間違ったIP)に接続しようとしていて、タイムアウトに直面していることがわかりました。

3
Saeed Sepehr

私は同じ問題を抱えていましたが、Apacheには mod_reqtimeout と呼ばれるタイムアウトを処理するモジュールがあります

デフォルト値(デフォルトのhttp.confには表示されません)は次のとおりです。

RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500

私の場合、プレーンHTMLフォーム送信を使用してファイルをアップロードしていたため、ファイルは技術的にはヘッダーの一部であり、デフォルトの構成ではヘッダーは20〜40秒でタイムアウトします。 20-40は20秒でタイムアウトするため非常にクールですが、500バイトが1秒で送信されると、40秒に達するまでさらに1秒の待機時間が追加され、その後、何があってもタイムアウトします。

ウェブサイトに大きなファイルをアップロードするため、httpd.confファイルに次の行を追加しました。

RequestReadTimeout handshake=0 header=20-600,MinRate=500 body=20,MinRate=500

したがって、ユーザーが最低500バイト/秒でデータを送信している限り、リクエストは最大値までタイムアウトしません。 600秒に達しました(ドキュメントをよく読んでください。スループットレートについては私に話さないでください)

それは実際にはかなりクールなApacheモジュールですが、PHP-FPMに関連する他の同様の「指定されたタイムアウトが期限切れになりました:」問題で他のApacheタイムアウト設定を変更することを人々が推奨しているのであまり知られていませんが、この問題は40を超える投稿で発生しますApacheでデフォルトで送信される秒数。

私にとっては、php-fpmを再起動するとうまくいきました。 @varlogtimアドバイスとしてログを調べた後。ログには、過去12時間にアクティビティがなかったことが示されました...

2
David

あなたのPHPコードは設定されたタイムアウトよりも時間がかかっています。Apacheがfcgiを使用してPHPページをロードすると、PHP- FPMサービスが処理されます。PHP-FPMの応答に時間がかかる場合、このタイプのタイムアウトが表示されます。考えられる原因は、PHPコードがループでスタックしたり、特に時間がかかっているデータベースからの応答。

トラブルシューティングを行うには、CLIバージョンのphpを使用して、スクリプトが妥当な時間内に完了するかどうかを確認します($ time php /path/to/file.php)。 PHP-FPMログに追加情報がある場合があります(デフォルト:/var/log/php-fpm.log)。

1
varlogtim