У php-fpm есть какие-то дополнительные таймауты?

Ссылка скопирована
1 ответ

Никак не могу обновить на одном из проектов модуль sale в bitrix:

[13-Sep-2023 14:59:38] WARNING: [pool www] child 2369, script '/var/www/project/htdocs/bitrix/admin/update_system_call.php' (request: "GET /bitrix/admin/update_system_call.php?&sessid=b1e8b4c21e79618a6d8b517c40b30e93&query_type=M&updRand=2") execution timed out (395.302464 sec), terminating [13-Sep-2023 14:59:38] WARNING: [pool www] child 2369 exited on signal 15 (SIGTERM) after 8954.024073 seconds from start [13-Sep-2023 14:59:38] NOTICE: [pool www] child 8331 started

[13-Sep-2023 14:59:38] WARNING: [pool www] child 2369, script '/var/www/project/htdocs/bitrix/admin/update_system_call.php' (request: "GET /bitrix/admin/update_system_call.php?&sessid=b1e8b4c21e79618a6d8b517c40b30e93&query_type=M&updRand=2") execution timed out (395.302464 sec), terminating [13-Sep-2023 14:59:38] WARNING: [pool www] child 2369 exited on signal 15 (SIGTERM) after 8954.024073 seconds from start [13-Sep-2023 14:59:38] NOTICE: [pool www] child 8331 started

Причина в медленной БД по всей видимости, поэтому работа скрипта не укладывается в таймаут. (исправить работу БД невозможно)
Падает на 300+ секунде, и nginx возврщает 502: https://i.imgur.com/Bg2VfvY.png и все бы хорошо - надо только таймаут увеличить, но: https://i.imgur.com/sRQ0ga1.png

И https://i.imgur.com/t0W50Ey.png тоже не помогает. В чем может быть проблема? У fpm где-то есть еще какие таймауты?

Дополнительно:

он есть, по дефолту 300сек

в конфиг nginx.conf в блок http добавь
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;

300 твой лимит

  • Владислав Лысков, но ведь процесс убивается в php-fpm. Причем тут nginx? Или он получает какое-то уведомление что его больше никто не ждет?
  • Александр Маджугин,

    но ведь процесс убивается в php-fpm

    я бы не был в этом уверен

  • Владислав Лысков, не запускается с этими параметрами: https://i.imgur.com/0lEfRAX.png
    Вот так их добавил: https://i.imgur.com/xGocZMw.png (закомментированные сейчас) - просто выдает:
  • Александр Маджугин, сейчас проверил у себя - у меня не дропается, но и у меня нет php-fpm, который, как я понимаю тебе его дропает
  • Владислав Лысков, кажется нашел - это request_terminate_timeout в настройках fpm
    Проверяю эту гипотезу
  • Александр Маджугин, может, и мимо, но советую посмотреть на размер таблицы b_user_session.
  • Михаил Ливач, да не - там база очень медленная в принципе. По внутреннему тесте ~600 запросов в секунду на чтение.
  • Хотел удивиться, что Вам 600 запросов в секунду мало - но речь про штатный механизм обновления, там не пофиксишь
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Виктор Sys Ответ

    PHP-FPM (FastCGI Process Manager) - это альтернативный способ обработки PHP-скриптов, который обеспечивает более эффективное управление процессами PHP. В PHP-FPM есть несколько параметров, которые могут быть настроены для оптимизации производительности и управления процессами.

    Один из таких параметров - это тайм-ауты, которые могут быть настроены для управления временем ожидания ответа от PHP-процесса. Эти тайм-ауты могут быть установлены как глобально для всего пула PHP-процессов, так и индивидуально для каждого процесса.

    Для установки тайм-аутов в PHP-FPM, вы можете использовать следующие директивы в конфигурационном файле php-fpm.conf:

    - request_terminate_timeout: Этот параметр устанавливает максимальное время ожидания ответа от PHP-процесса для выполнения запроса. Например, если установить request_terminate_timeout на 30 секунд, то PHP-FPM автоматически завершит процесс, который выполняется более 30 секунд.
    - request_slowlog_timeout: Этот параметр устанавливает время, после которого запрос будет считаться медленным и будет записан в лог-файл медленных запросов.

    Пример конфигурации в php-fpm.conf для установки тайм-аутов:

    request_terminate_timeout = 30s
    request_slowlog_timeout = 10s

    request_terminate_timeout = 30s request_slowlog_timeout = 10s

    После внесения изменений в конфигурационный файл php-fpm.conf, не забудьте перезапустить сервис PHP-FPM, чтобы изменения вступили в силу.

    Таким образом, настройка тайм-аутов в PHP-FPM позволяет управлять временем ожидания ответа от PHP-процессов и оптимизировать производительность вашего веб-сервера.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно