Мой сервер Debian снова перестал отвечать на запросы и нуждался в перезапуске (невозможен вход по SSH, больше не передавались данные журнала в базу данных MySQL другого сервера, новые подключения FTP невозможны, но Wowza Mediaserver продолжает работать и потоковое видео без проблем).
Тем не менее, я все еще вошел в систему через существующее соединение SSH и смог вводить команды оболочки. При вводе "ps auxf" у меня был такой вывод (OUTPUT 1):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 14994 0.0 0.0 71200 3520 ? S 00:01 0:00 \_/usr/sbin/CRON -f
root 15007 0.0 0.0 4328 748 ? Ss 00:01 0:00 | \_ /bin/sh -c /usr/sbin/iotop --accumulated --batch --delay=86100 --proc
root 15014 0.0 0.0 60208 17548 ? S 00:01 0:00 | \_ /usr/bin/python /usr/sbin/iotop --accumulated --batch --delay=861
root 18667 0.0 0.0 71092 3504 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18668 0.0 0.0 71092 3472 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18669 0.0 0.0 71092 3472 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18670 0.0 0.0 71092 3428 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
root 18671 0.0 0.0 71200 3520 ? D 08:50 0:00 \_ /usr/sbin/CRON -f
И десятки больше похожи на последние несколько строк. Кроме того, при вводе ps через 15 минут все старые записи CRON -f (например, PID 18667, время начала 08:50) по-прежнему отображаются как запущенные процессы.
Очевидно, что выполнялось много cronjobs, но только первый cronjob (который существует в моем crontab) имеет содержимое сценария (/usr/sbin/iotop). Другие не имеют команды и находятся в неактивном режиме (состояние "D" по сравнению с первым, имеющим состояние "S").
Мой сервер выполняет около 5-6 PHP-скриптов cronjobs раз в минуту, большинство из которых выполняются в течение 15-40 секунд и не требуют больших ресурсов. Их вывод ps aux выглядит следующим образом (ВЫХОД 2):
root 19024 0.0 0.0 42224 2644 ? S 09:03 0:00 \_ /usr/sbin/CRON -f
root 19026 0.0 0.0 4328 712 ? Ss 09:03 0:00 | \_ /bin/sh -c /usr/bin/php -q /usr/local/script.php
Поэтому я предварительно делаю вывод, что первый вывод (ВЫХОД 1) не показывает, что мои PHP-скрипты перестали отвечать, накапливались и вызывали проблемы. Тем не менее, вывод "ps auxf" в OUTPUT 1 показал около 5-6 новых записей CRON -f в минуту, все из которых продолжали выполняться, что может относиться к попыткам cronjob запустить мои сценарии, но не в состоянии запустить их и затем застрять, производя этот огромный вывод ps auxf?
Вопросы:
В чем смысл этих десятков строк CRON -f? На что они ссылаются?
Может ли этот вывод ps auxf объяснить что-то, почему мой сервер перестал отвечать на запросы?