このサイトでは nginx+php-fpm を使用しています。現在、一部のページにアクセスすると、数秒後に 502 状態が返されます (php スクリプトのタイムアウトによって発生する 502 とは異なります)。一方、他のページは引き続きサービスを受けています。
php-fpm のステータス ページには、すべてのプロセスが であると表示されますactive
が、それらはすべて でスタックしておりState: finishing
、サーバーの負荷は低くなっています。
pid: 12775
state: Finishing
start time: 18/May/2013:16:50:27 +0800
start since: 755
requests: 59
request duration: 743543095
request method: GET
request URI: /index.php
content length: 0
user: -
script: /data/webserver/index.php
last request cpu: 0.00
last request memory: 0
を再起動すると正常に戻りますが、なぜこのようなことが起こるのか疑問に思いますphp-fpm
。
答え1
この問題は、長い調査の結果、 に登録された長時間実行関数によって発生しましたfastcgi_finish_request()
。答えを探している場合の参考までに。