2013-06-06 17 views
6

私はちょうど私のログが遅いphpスクリプトの警告で文字通り数分、php5-fpm + nginx + google bot =接続がピアによってリセットされました

私は当初php slow logsとPHPエラーログに集中していました。それはちょうど私が間違った経路の下で導かれた理由である私はいくつかのDNS調整を実装していた。

私は最終的に、ほとんど同じIPからのピアによってリセットされた回線の後に回線を明らかにしたnginxエラーログを確認しました。

私はIPアドレスをGoogleで検索し、それがGoogleに属していることを発見しました。これは明らかにGoogleのbot/spiderがサイトを訪れたことです。ここで

ピアによってリセット接続の原因であるどのようなエラーログ

2013/06/06 14:04:05 [error] 12313#0: *7435269 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.187, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:05 [error] 12308#0: *7435135 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.167, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:05 [error] 12308#0: *7435994 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.199, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:04:12 [error] 12309#0: *7436209 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.168, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:12 [error] 12309#0: *7441608 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.177, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:15 [error] 12310#0: *7440634 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.219, server: www.domain.com, request: "GET /c.html?q= xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:05:15 [error] 12313#0: *7441634 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.194, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:02 [error] 12310#0: *7444721 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.221, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12308#0: *7443911 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.203, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12309#0: *7445423 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.164, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 
2013/06/06 14:06:05 [error] 12310#0: *7445640 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 209.85.238.222, server: www.domain.com, request: "GET /c.html?q=xyz HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.domain.com" 

のクリップです。 google botは実際にページを訪問してリクエストを終了し、それが生きていることを確認するだけでしょうか?

クライアントが終了したため、孤立スレッドに属する私のカール要求を呼び出すため、これはあまりうまくありません。彼らは遅いPHPスクリプトを引き起こすだけでタイムアウトを意味する。

これを間違って読みましたか?

+0

ゴーグルボットは通常の場合にリクエストを終了しません。彼らは通常の方法でページを訪問しています。時にはヒット率が非常に高いですが、彼らは接続を終了しません。 –

答えて

0

エラーメッセージを見れば、問題は、Googleがリクエストを終了するのではなく、nginxのののことをされていることではないことを意味している上流

からレスポンスヘッダを読みながら、それは

を語りますアップストリーム(php-fpm)が要求を終了しています。通常、これはphpコードが実行されているというエラーが原因です。私たちは、コードを持っていないことを考えると

は、ここでいくつかの一般的なトラブルシューティングの手順です:PHP-FPMの構成で

  • request_terminate_timeoutmax_input_timemax_execution_timeの値を増やします。
  • php.iniまたはプールの.conf設定ファイルでエラーログを有効にします(ただし、本番ウェブサイトの場合は "display_error"にはなりません)。
  • 実行中のコードでデバッガを実行すると(xdebugは非常に便利です)、コードをステップ実行すると、ほとんどの問題が発生します。
関連する問題