Назад | Перейти на главную страницу

Инструменты для отладки таймаутов Apache / PHP-FPM

Я имею дело с очень странной проблемой тайм-аута в долго работающем скрипте и не могу отследить, где происходит тайм-аут. Какие методы вы бы использовали, чтобы определить, где это происходит, и записать, какая часть фактически выбрасывает тайм-аут?

Настроить:

AWS NLB (TCP 80/443 Listeners. Default Timeout is 350 Seconds) [1]
AWS ALB (HTTP 80/443 Listeners. Idle Timeout = 300 Seconds)
CentOS 7 Servers with PHP-FPM 7.3 and Apache 2.4.39
    /etc/php.ini:
    max_execution_time = 300
    max_input_time = 60
MariaDB 10.3 on RDS.

Когда я пытаюсь запустить PHP-скрипт, который анализирует большой, уже загруженный CSV-файл, на моем сервере разработки и промежуточном сервере время ожидания для которых установлено намного выше, занимает ~ 3-4 минуты.

На моих живых серверах (описанных выше) он получает тайм-аут 504 за 90 секунд.

Так откуда же этот тайм-аут? Все значения установлены выше этого. У меня включен mod_reqtimeout для серверов dev / staging / live, но я никогда их не изменял, поэтому не уверен, почему это повлияет на одну настройку, а не на другую.

ОБНОВИТЬ:

Учитывая другой сервер, где mod_reqtimeout модуль вызывал у меня проблемы, я просто решил полностью отключить его во всех экземплярах Apache за балансировщиком нагрузки. Это решило проблему, но теперь возникает вопрос:

Где в CentOS 7 хранятся значения mod_reqtimeout по умолчанию? Я могу найти его с помощью grep, а значения по умолчанию, объясненные Apache, не составляют в сумме до 90 секунд. [2]

RequestReadTimeout handshake=0 header=20-40,MinRate=500 body=20,MinRate=500

Источники:

1) Таймауты NLB

2) Apache mod_reqtimeout по умолчанию