Я пытаюсь переместить приложение PHP Laravel со своего компьютера разработки, на котором запущен apache, на сервер, на котором запущен nginx. Я настроил соединение с базой данных, и мое приложение Laravel (в основном) отвечает ожидаемой страницей. Однако бывают случайные моменты, когда сервер не отвечает быстро и возвращает
504 Gateway Time-out
через некоторое время. А
service php5-fpm restart
или повторная попытка позже исправляет это временно. Я использую nginx с PHP 5.6 (через FPM), HHVM и MySQL. Я не хочу увеличивать максимальное время выполнения, так как сценарий не должен занимать так много времени.
Я подозреваю, что это проблема либо сценариев PHP в новой среде, либо проблема конфигурации. Это не должно быть проблемой для самого nginx, поскольку статические ресурсы отправляются правильно. Как я могу найти и исправить это?
Если вы не доверяете приложению, вы можете установить медленный журнал, чтобы регистрировать каждый запрос, который длится более N секунд (на fpm), добавив конфигурацию пула fpm (расположение по умолчанию обычно (debian): / etc / php5 / fpm / pool.d / www.conf)
slowlog = /path/to/slow.log
request_slowlog_timeout = Ns
измените N на количество секунд, которое вы хотите, установите его ниже максимального времени выполнения (чтобы он регистрировался до истечения времени ожидания)
Взгляните на количество детей, max_requests и серверов, работающих с fpm. Если проблема возникает время от времени, возможно, вы достигли предела, и для nginx больше нет доступных соединений.
Взгляните на свои значения тайм-аута nginx, возможно, тайм-аут fpm больше, и nginx сдается, прежде чем получить ответ.
Я думаю, что эти советы могут быть полезны, но я не думаю, что охватываю все возможные моменты, которые нужно проверить, но это хорошее начало