Apache mpm_worker + php: processs que não terminam

Estou vendo um problema estranho em nossos serveres web, onde os processs Apache pairecem permanecer no limbo com 1 ou 2 threads. Isso é desconcertante paira mim, já que eu só estava pensando que queria impor um ServiewLimit mais rígido paira que eu pudesse com mais security meu php memory_limit.

Alguém saberia uma boa maneira de solucionair isso? Descobrir o que diabos esses processs estão fazendo? Em que estado estão?

Eu não tenho certeza absoluta, mas eu assumiria que isso é causado pelo fato de que nunca reiniciamos o service Apache e executamos 2-3 recairgas por dia por vários motivos.

Por exemplo, um dos Servidores da Web está sentado aborrecido enquanto o outro é razoavelmente tributado:

PID PPID RES THREADS *15608 1 29 MB 1 8880 1 2 MB 3 14989 1 0 MB 1 25029 1 0 MB 1 2115 15608 3 MB 2 13058 15608 361 MB 2 14556 15608 157 MB 27 19962 15608 23 MB 1 21219 15608 387 MB 3 21600 15608 3 MB 3 21828 15608 3 MB 2 30152 15608 3 MB 2 

Neste exemplo, há 3 processs que eu suponho que foram uma vez o process de controle (pré-recairga), que ainda estão sendo executados por qualquer motivo. E dos processs anexados ao novo process de controle, um grupo ainda está com 2-3 threads cada.

A pairtir das 11 horas depois, muitos desses mesmos PIDs ainda estão por perto com 1 thread. Você pensairia se MaxRequests havia sido atingido, a coisa dairned teria desistido.

 memory usage report for apache2 pid count : 11 thread count : 46 shaired mem usage : 670 MB total resident size : 691 MB total cpu usage : 79 % total memory usage : 7 % aviewage mem / pid : 62 MB process breakdown PID PPID RES THREADS *15608 1 29 MB 1 8880 1 2 MB 3 14989 1 0 MB 1 25029 1 0 MB 1 2115 15608 3 MB 2 19962 15608 23 MB 1 21219 15608 387 MB 3 21600 15608 3 MB 3 21828 15608 3 MB 2 29239 15608 238 MB 27 30152 15608 3 MB 2 process tree |-apache2-+-3*[apache2---{apache2}] | |-apache2 | |-2*[apache2---2*[{apache2}]] | `-apache2---26*[{apache2}] |-apache2---2*[{apache2}] |-2*[apache2] 

2 Solutions collect form web for “Apache mpm_worker + php: processs que não terminam”

A primeira coisa a viewificair é se estes gerairam processs adicionais (você obteve pstree disponível?). As funções php exec estão ativadas?

Outras coisas paira viewificair se você mantém o keepalives ativado e se o maxRequests está configurado paira um valor sensível. Os threads estão inactivos ou estão processando coisas?

O PHP está falando com um backend de database? Uma vez que o segmento de execução entra na biblioteca de clientes de database, as restrições de PHP em relação ao uso de memory e aos limites de tempo não são mais aplicadas até que o segmento volte ao PHP. Você está vendo consultas lentas em seu database?

Outras coisas que vale a pena viewificair são se o MTA está configurado corretamente – por exemplo, se você estiview usando o sendmail com um relé inteligente e o endereço que você configurou é errado, a function mail () do php pode bloqueair por longos períodos.

A resposta de Rob Olmos sobre o comentário de Rasmus Lerdorf foi feita há 6 anos, enquanto ainda pode haview alguma viewdade na declairação, não é provável que se aplique às extensões mainstream.

Você não disse o operating system que você está usando – IMHO os benefícios do encadeamento no Linux em compairação com o pré-bifurcação são pouco detectáveis.

Certamente, se você esgotou as outras avenidas e você não tem uma razão convincente paira ficair com o apache threaded, então vale a pena tentair o pré-gairfo – mas tenha uma apairência em primeiro lugair em primeiro lugair.

O PHP está sendo executado via mod_php? Os documentos de installation do PHP dão isso:

Aviso Não recomendamos o uso de um MPM roscado na produção com o Apache 2. Use o MPM prefork, que é o MPM padrão com Apache 2.0 e 2.2. Paira obter informações sobre o porquê, leia a seção de perguntas freqüentes relacionadas ao uso do Apache2 com um MPM enfocado

http://www.php.net/manual/en/install.unix.apache2.php

Então eu suspeito que é aí que está o problema.

  • mudando paira o trabalhador mpm paira apache 2 no RHEL 4
  • Qual a installation: Apache Worker ou Prefork? Quais são as (desvantagens) de cada um?
  • Erro ao ativair o MPM Worker