Apache2 / mod_fcgid / PHP Limites de processo não respeitados

1

Eu recentemente mudei para Apache2 / mod_fcgid / PHP de nginx / php_fpm. Este é o segundo servidor no qual fiz esta migração, mas é usado com muito menos frequência do que o primeiro, que funciona como um encanto.

O problema está nos processos do PHP que estão gerando. Ao olhar para a documentação do mod_fcgid , parece que o padrão para matar processos inativos é de 300 segundos; Eu mudei isso para 20. Neste ponto, eu ficaria bem se 300 funcionasse - mas isso não está acontecendo. Está em execução há quase um dia e o status do servidor mostra 12 processos ativos:

Process name: php5
Pid Active  Idle    Accesses    State
19243  84879   14420       11      Ready

Process name: php5
Pid Active  Idle    Accesses    State
20954  82143   149         22      Ready
20947  82149   149         22      Ready
20953  82143   149         13      Ready

Process name: php5
Pid Active  Idle    Accesses    State
20589  82765   23644       72      Ready

Process name: php5
Pid Active  Idle    Accesses    State
17663  86103   2034       117      Ready

Process name: php5
Pid Active  Idle    Accesses    State
19862  83961   1976        91      Ready

Process name: php5
Pid Active  Idle    Accesses    State
18495  85825   5164        18      Ready

Process name: php5
Pid Active  Idle    Accesses    State
25463  75109   23948       24      Ready

Process name: php5
Pid Active  Idle    Accesses    State
2466   60019   60016        2      Ready

Process name: php5
Pid Active  Idle    Accesses    State
20729  82541   12592       23      Ready

Process name: php5
Pid Active  Idle    Accesses    State
22135  80616   46361        6      Ready

As aplicações PHP não estão sendo servidas neste momento - o Apache está retornando um 503. No entanto, ele ainda está servindo ao módulo de status do servidor, e os aplicativos mod_mono / Mono 2.10 ainda estão sendo atendidos. O problema é com o PHP.

/etc/apache2/mods-available/fcgid.conf ...

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  FcgidConnectTimeout 10
  FcgidMaxRequestsPerProcess 500
  FcgidIdleTimeout 20
  FcgidFixPathinfo 1
  FcgidMaxProcesses 10
</IfModule>

(heh - Max Processes também não está sendo respeitado ...) É claro que o fcgid.conf é "smylinked" em mods-enabled.

    
por Daniel 24.03.2011 / 00:56

1 resposta

1

Tente definir a variável env:

PHP_FCGI_CHILDREN=0

no seu script php starter.

O mod_fcgid cuidará de gerar todos os processos necessários. Portanto, nenhuma criança é realmente necessária e essa é a que geralmente é deixada para trás.

    
por 07.06.2012 / 06:23