Премиальное программное обеспечение и практические уроки
504 Тайм-аут шлюза
NginxВнезапная ошибка504 Тайм-аут шлюза, используя PHP длябаза данныхПри выполнении большого количества запросов вы можете иногда получать ошибку 504 Gateway Timeout. Не волнуйтесь, если столкнётесь с ошибкой 504 Gateway Timeout. Это может произойти всего из-за нескольких операций. Обновите страницу с информацией о тайм-ауте и продолжите подключение к базе данных. Это немного неудобно. Давайте рассмотрим, как решить проблему с ошибкой 504 Gateway Timeout в Nginx.
К возникновению ошибки 504 на шлюзе обычно приводят следующие ситуации:
- Программа веб-сайта обрабатывает большой объем данных, что приводит к длительному времени ожидания и вызывает тайм-аут шлюза 504.
- При вызове внешнего запроса в веб-программе возникает тайм-аут шлюза 504 из-за тайм-аута в ответе на внешний запрос.
- После сбоя подключения к базе данных SQL программа не была остановлена вовремя, что привело к бесконечному циклу и тайм-ауту шлюза 504.
Проблема тайм-аута шлюза 504 вызвана конфигурацией Nginx.сервер, откройте файл конфигурации nginx. Вы можете использоватьxshellилиXftpИнструменты для входа на сервер, первый находится вЛинуксПоследний вариант — изменить файл через SFTP или SSH.
Изменить конфигурацию nginx
Измените /etc/nginx/nginx.conf документ.
Добавьте параметры в блок http {}:
fastcgi_connect_timeout 6000;
fastcgi_send_timeout 6000;
fastcgi_read_timeout 6000;
Давайте посмотрим, что делают эти параметры.
fastcgi_connect_timeout
Тайм-аут соединения Fastcgi, по умолчанию 60 секунд
fastcgi_send_timeout
Тайм-аут для отправки запроса процессом nginx процессу fastcgi. Значение по умолчанию — 60 секунд.
fastcgi_read_timeout
Тайм-аут для процесса fastcgi, отправляющего вывод процессу nginx. Значение по умолчанию — 60 секунд.
Кроме того, в nginx естьдействующийНастройки параметров тайм-аута.
proxy_connect_timeout 20000;
proxy_send_timeout 20000;
proxy_read_timeout 20000;
proxy_connect_timeout
Тайм-аут соединения Nginx с бэкенд-сервером (тайм-аут соединения через прокси-сервер)
proxy_send_timeout
Время передачи данных внутреннего сервера (тайм-аут отправки агента)
proxy_read_timeout
После успешного подключения время ответа внутреннего сервера (тайм-аут приема прокси)
О тайм-ауте проксиКонфигурация параметровЕсли ваш Nginx не предоставляет услуги внешнего прокси-сервера, вы можете проигнорировать эту часть настройки.
После изменения Nginx используйте nginx -t, чтобы проверить правильность следующих файлов конфигурации, а затем перезапустите службу nginx.
systemctl перезапускает nginx
Изменить конфигурацию PHP
1. Измените файл /etc/php.ini и найдите max_execution_time в файле php.ini (в секундах).
максимальное_время_выполнения
max_execution_time — максимальное время выполнения PHP-скрипта. Значение по умолчанию — 30 секунд. Рекомендуется изменить значение на 300 секунд.
2. В /etc/php-fpm.d В, изменить http://www.conf Файл. Найдите request_terminate_timeout (в секундах).
request_terminate_timeout
Установите таймаут для одного запроса. Рекомендуется установить 6000.
3. Можно добавить в PHP-программу set_time_limit(секунды) Установите максимальное время выполнения
Например: set_time_limit(0) означает отсутствие тайм-аута.
После изменения параметров в PHP перезапустите службу PHP.
systemctl перезапускает php-fpm
Подвести итог
Выше представлен метод изменения тайм-аута шлюза nginx 504, который обычно возникает в среде с большим объемом данных.Тайм-аут шлюзаБлагодаря вышеописанному решению, за счёт увеличения периода ожидания, проблема с кодом 504 Gateway временно решена. Наконец, окончательное решение заключается в оптимизации программы и базы данных веб-сайта.