504 Tempo limite do gateway com PHP no nginx [duplicado]

1

Estou tentando mover um aplicativo PHP Laravel do meu computador de desenvolvimento executando o apache para um servidor executando o nginx. Eu configurei a conexão do banco de dados, e meu aplicativo Laravel (principalmente) responde com a página esperada. No entanto, há momentos aleatórios quando o servidor não responde rapidamente e retorna um

504 Gateway Time-out

depois de algum tempo. Um

service php5-fpm restart

ou tentar novamente corrige isso temporariamente. Eu estou usando nginx com PHP 5.6 (através do FPM), HHVM e MySQL. Eu não quero aumentar o tempo máximo de execução, pois o script não deve levar tanto tempo em primeiro lugar.

Eu suspeito que isso seja um problema com os scripts PHP no novo ambiente ou com um problema de configuração. Isso não deve ser um problema com o próprio nginx, pois os recursos estáticos são enviados corretamente. Como posso resolver e corrigir isso?

    
por Streetlamp 04.08.2015 / 16:56

1 resposta

2
  • Se você desconfiar do aplicativo, é possível definir um log lento para registrar cada solicitação que dura mais de N segundos (no fpm), adicionando a configuração do pool do fpm (o local padrão tende a ser (debian): / etc /php5/fpm/pool.d/www.conf)

    slowlog = /path/to/slow.log

    request_slowlog_timeout = Ns

altere o N com a quantidade de segundos que você deseja, diminua o tempo máximo de execução (assim ele será registrado antes de ser esgotado)

  • Veja a quantidade de crianças, max_requests e servidores em execução com o fpm. Se ocorrer um problema de vez em quando, talvez você esteja atingindo o limite e não haja mais conexões disponíveis para o nginx.

  • Dê uma olhada nos valores de tempo limite do nginx, talvez o tempo limite do fpm seja maior e o nginx esteja desistindo antes de obter a resposta.

Eu acho que essas dicas podem ser úteis, mas eu não acho que estou cobrindo todos os pontos possíveis para checar, mas esses são um bom começo, embora

    
por 04.08.2015 / 18:46