Estado do PHP FPM Concluindo, mas nunca conclui

2

Estamos executando um aplicativo Symfony no Ubuntu 14.04 com Nginx e PHP-FPM

O problema é que o PHP FPM individual irá ocasionalmente ficar em nossos servidores de produção.

Eu tenho a saída da página de status:

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

Não consigo entender por que esse processo está pendente.

Se eu ligo o processo, é apenas um loop com isso:

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

Eu verifiquei os registros de acesso Nginx e combinei a solicitação, e a solicitação está bem, está retornando um 200 e nenhum erro pode ser replicado usando o URL).

Qualquer ajuda seria muito apreciada

Acessar registros:

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
    
por Joshua Cullen 08.09.2014 / 07:51

3 respostas

2

Acontece que estávamos usando chaves inválidas do Memcached em determinadas situações. Isso fazia com que o Memcached morresse sem erros e o processo do PHP continuava vivo.

    
por 17.11.2014 / 05:48
1

No nosso caso, nós tínhamos configurado mod_proxy_fastcgi com um soquete de domínio Unix e reutilização de conexão (enablereuse = on), entretanto como mencionado no comentário do lkraav em link :

# UDS does not currently support connection reuse

Isso foi o que estava causando o empilhamento dos processos filhos do FPM no estado de acabamento. Remover a reutilização da conexão resolveu o problema e estabilizou muito o sistema.

    
por 15.04.2016 / 16:22
0

Como você diz que o fpm trava, você deve observar os logs do fpm em vez do nginx. Ative o slow_log e depure o log em php-fpm.config. Tente também strace com diferentes opções para ver mais. talvez esteja relacionado a uma função específica do php

    
por 08.09.2014 / 08:58