Я использую общий хостинг. Я вижу постоянно растущее количество процессов. Когда я посмотрел в ps aux
Я видел, что около двух <defunct>
процессы lsphp
добавляются каждый день. Сейчас общее число превышает 40, и на этом хостинге жестко ограничено 100 процессов, что меня беспокоит.
Я заметил, что работает TIME
из этих процессов было 0:29
или же 0:30
, Это заставляет меня подозревать, что это процессы, которые заканчиваются временем выполнения. Я установил это время вручную в своем коде в начале: ini_set('max_execution_time', 30);
потому что самые медленные сценарии на моем сайте выполняются в течение 3-5 секунд и 30 секунд, что кажется достаточно большим промежутком, чтобы понять, что процесс завис и не будет продолжен. Однако это, кажется, имело обратный эффект.
Я посмотрел журналы приложений, и кажется, что зависшие процессы (по крайней мере, те, которые превышают ограничение по времени) являются DomPDF, которые являются самыми длинными. Я думаю, что пользователь запрашивает PDF, но закрывает соединение до того, как PDF был подготовлен и ответ был отправлен, и, возможно, это каким-то образом оставляет процесс в состоянии ожидания … Или просто DomPDF получает себя в этом состоянии?
Что может быть причиной? Что я могу сделать, чтобы решить это?
Могу ли я каким-либо образом (путем изменения сценария PHP) предотвратить эти процессы от зомбирования? Есть ли у меня шанс убить процессы (у меня нет прав на перезагрузку компьютера или на уничтожение родительского процесса).
Вы ничего не сказали нам о том, как настроена система, кроме того, что это «виртуальный хостинг». Что это общий хостинг означает, что вы вряд ли будете иметь возможность сильно влиять на его поведение, а первый Человек, с которым вам следует поговорить, является поставщиком услуг — в конце концов, вы платите им за поддержку.
Что вы видите процесс PHP предполагает что он настроен как CGI или fastCGI — (или, не дай бог, suPHP). Хотя существует множество причин, по которым у вас могут быть процессы-зомби, они могут не учитываться при ограничении вашего сервера (вы не сказали, как это было реализовано / применено). Вероятные причины:
Поговорите с вашим хостинг-провайдером.
Других решений пока нет …