it-swarm-ja.com

PHP FPM状態は終了していますが、完了していません

NginxとPHP-FPMを使用してUbuntu14.04でSymfonyアプリケーションを実行しています

問題は、個々のPHP FPMが本番サーバーでハングすることがあることです。

ステータスページからの出力があります:

pid:                  13416
state:                Finishing
start time:           08/Sep/2014:12:35:29 +1000
start since:          10548
requests:             3
request duration:     158138427297
request method:       GET
request URI:          /app.php?searchText=Search+term&page=2
content length:       0
user:                 -
script:               /var/projects/site_path/app.php
last request cpu:     0.00
last request memory:  0

このプロセスがハングしている理由がわかりません。

プロセスをstraceすると、次のようにループします。

# strace -p 13416
gettimeofday({1410154710, 385743}, NULL) = 0

Nginxアクセスログを確認し、リクエストを照合しましたが、リクエストは正常です。200が返され、URLを使用してエラーを複製することはできません。

どんな助けでも大歓迎です

アクセスログ:

172.30.12.110 - - [08/Sep/2014:12:35:29 +1000] "GET /search?searchText=Search+term&page=2 HTTP/1.1" 200 11174 "/search?searchText=Search+term" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MATPJS; rv:11.0) like Gecko"
172.30.12.110 - - [08/Sep/2014:12:35:32 +1000] "GET /search?searchText=Search+term&page=2 HTTP/1.1" 200 11174 "-" "Mediapartners-Google"
172.30.12.110 - - [08/Sep/2014:12:35:34 +1000] "GET /search?searchText=Search+term&page=2 HTTP/1.1" 200 11169 "-" "Mediapartners-Google"
172.30.12.110 - - [08/Sep/2014:12:35:51 +1000] "GET /search?searchText=OSearch+term&page=3 HTTP/1.1" 200 11158 "/search?searchText=Oven+baked+duck+and+shitake+rissotto&page=2" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MATPJS; rv:11.0) like Gecko"
172.30.12.110 - - [08/Sep/2014:12:36:50 +1000] "GET /profile/ HTTP/1.1" 200 8108 "/search?searchText=Oven+baked+duck+and+shitake+rissotto&page=4" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MATPJS; rv:11.0) like Gecko
2
Joshua Cullen

特定の状況で無効なMemcachedキーを使用していたことが判明しました。これにより、Memcachedはエラーなしで停止し、PHPプロセスは存続していました。

2
Joshua Cullen

この例では、Unixドメインソケットと接続の再利用(enablereuse = on)を使用してmod_proxy_fastcgiを構成しましたが、lkraavのコメント https://github.com/icing/mod_h2/issues/62 =:

# UDS does not currently support connection reuse

それが、FPMの子プロセスが終了状態で積み重なる原因でした。接続の再利用を削除すると、問題が解決し、システムが大幅に安定しました。

1
SerkanC

Fpmがハングすると言うので、nginxではなくfpmログを監視する必要があります。 php-fpm.configでslow_logとデバッグログをオンにします。また、さまざまなオプションを使用してstraceを試して、詳細を確認してください。多分それは特定のphp関数に関連しています

0
roothahn