Я пытаюсь отладить зависания сервера при запуске приложения Laravel на K8s. У меня есть 2 модуля со 100 статическими дочерними элементами в каждом, и я провожу нагрузочный тест. Как и ожидалось, когда нагрузка применяется, дети забирают запросы (запрос представляет собой простую загрузку страницы домашней страницы - я использую новое приложение Laravel, чтобы исключить любую логику приложения, являющуюся виновником), но процессы, похоже, не завершаются, пока не истечет время ожидания (в настоящее время установлено 300 с по умолчанию). При таком поведении кажется, что все дочерние элементы работают намного дольше, чем время запроса. Это ожидаемое поведение? Если нет, кто-нибудь знает, почему потомки не переходят в режим ожидания после завершения запроса?
Конфигурация пула FPM:
[www]
user = application
group = application
listen = 127.0.0.1:9000
pm = static
pm.max_children = 100
pm.max_requests = 200
pm.status_path = /status
access.log = /docker.stdout
access.format = "[php-fpm:access] %R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
slowlog = /docker.stderr
request_slowlog_timeout = 1
catch_workers_output = yes
clear_env = no
php_admin_value[error_log] = /docker.stderr
php_admin_flag[log_errors] = on
php_admin_value[log_errors] = on
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i
ОБНОВИТЬ
Как предложил Майкл Хэмптон, я перехватил фреймворк Laravel, добавив следующее в начало /routes/web.php
файл.
echo("<h1>Hello Kubernetes</h1>");
die();
Теперь при выполнении нагрузочного теста (на этот раз только с одним модулем) поведение намного более приемлемо, что наводит меня на мысль, что проблема связана с проектом Laravel. Поскольку это новая установка, следующим шагом будет поиск .env
файл, который я повторно использовал из оскорбительного проекта, чтобы узнать, есть ли там виновные. Любые предложения о том, как еще отладить это, приветствуются!
ОБНОВЛЕНИЕ 2 После удаления вышеупомянутого перехвата в фреймворке запросы снова становятся бесконечными. Поскольку это похоже на проблему с Laravel, я собираюсь передать ее в StackOverflow.
Для всех, кто сталкивается с такой же проблемой, это связано с моим подключением к Redis. Перейдя на database
драйверы для сеанса и кэширования процессов FPM закрываются, как ожидалось. Я не уверен, почему драйвер Redis держал соединения открытыми, но, к сожалению, у меня нет возможности отладить его в данный момент.