У меня есть VPS-сервер Debian с Apache 2.4.10 mod-php. Сервер запускается нормально, но через некоторое время я получаю 100% процессор в одном из процессов www-data, и веб-сервер становится недоступным.
Я попытался strace
на этом процессе, и я получил бесконечный цикл этих строк:
poll([{fd=93, events=POLLIN}], 1, 3000) = 1 ([{fd=93, revents=POLLHUP}])
read(93, "", 13160)
Затем я попробовал lsof и получил это:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
apache2 1134 www-data 93r FIFO 0,8 0t0 3176528027 pipe
Что может вызвать проблему? Когда я перезапускаю apache, через некоторое время у меня такое же поведение.
Некоторые сценарии PHP на вашем сервере используют все время процессора. Возможно у вас бесконечный цикл. Информация из strace
сообщает, что скрипт опрашивает некоторый файловый дескриптор канала. Возможно, другой конец этого канала был закрыт, и ваш скрипт все еще пытается что-то из него прочитать (необработанная ошибка).
Если вы не знаете о скриптах такого типа на вашем сервере, проверьте, нет ли других скриптов, которые могли быть кем-то «введены» на ваш сервер. Проверьте журналы Apache, чтобы узнать, какие файлы были открыты удаленными клиентами.