PHP rápido cgi (usado em conjunto com NGINX) congelar em suspender

1

Eu configurei uma rede local muito pequena para o desenvolvimento da web. O servidor da web é uma pilha de

  • MySQL 5.1.37
  • NGINX 0.8.19
  • PHP 5.2.10 com w / Suhosin-Patch 0.9.7 e Xdebug v2.0.4

O próprio servidor executa o ubuntu karmic 9.10.

Para fornecer PHP para o NGINX, eu uso o seguinte comando:

sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid 

Meu problema é que toda manhã, quando a máquina retorna de um estado de suspensão, o PHP parou de funcionar (no navegador, o NGINX exibe uma mensagem de "gateway inválido" após alguns segundos tentando carregar a página solicitada). Se eu tentar relançar o comando para recuperar o PHP, isso me dará um erro, dizendo que o endereço já está em uso.

EDIT: mais informações

Após ter gerado, se eu executar ps ax | grep php , obtenho um processo php-cgi em execução, enquanto, se eu emitir o comando depois de retomar da suspensão, não obtenho nada, embora o endereço ainda seja " em uso "se eu tentar re-spawn. A ideia que está passando pela minha cabeça é que o php-cgi registra sua presença com algum outro processo, que não detecta a morte súbita do php-cgi com a suspensão, mantendo o endereço ocupado. Pode ser?!

Alguma ideia de como consertar isso? Uma solução elegante é muito bem-vinda, mas mesmo uma solução alternativa que possibilite ao servidor a auto-recuperação sem intervenção humana está ok. Este é apenas um servidor de produção interno usado por algumas pessoas.

Obrigado antecipadamente pelo seu tempo!

    
por mac 24.11.2009 / 11:07

3 respostas

0

Ok, depois de alguns dias de testes, posso confirmar que o problema foi resolvido sozinho com upgrades regulares.

Se você incorrer no mesmo problema, se conseguir descobrir quais processos precisam ser eliminados para "redefinir" o fcgi servervice, a solução fornecida por ~ quack parece ser sensata.

Versão de software com a qual o problema não é mais mostrado:

  • Kernel: 2.6.31-15-genérico
  • PHP: 5.2.10-2ubuntu6.3 com o Suhosin-Patch 0.9.7 (cli)
  • Nginx: 0.8.19
por 28.11.2009 / 13:35
1

Talvez você possa mudar para php-fpm de spawn-fcgi?

    
por 24.11.2009 / 23:35
1

Karmic ainda usa o pm-utils, certo? Você precisa de um script em /etc/pm/sleep.d que pare seu servidor em suspensão e reinicie-o no currículo.

Um script de exemplo pode ser o seguinte (ajuste as opções de suspensão / retomar conforme necessário, mas isso deve fornecer a estrutura de script correta). Se você já criou um script /etc/init.d/foo para iniciar seu servidor na inicialização, provavelmente desejará usá-lo para parar / iniciar o servidor abaixo.

#!/bin/sh
#
# /etc/pm/sleep.d/10spawnfcgi

case "$1" in

   hibernate|suspend)
      # example -- replace this with what works on your system
      killall spawn-fcgi
      # or better yet:
      # /etc/init.d/myFcgiServer stop
      ;;
   thaw|resume)
      # restart -- tweak to your liking, rerun your startup script, etc
      /usr/bin/spawn-fcgi -a 127.0.0.1 other-options-here
      # or better yet:
      # /etc/init.d/myFcgiServer start
      ;;

   *) exit $NA
      ;;
esac
    
por 25.11.2009 / 02:08