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

100% CPU не дает мне войти в систему

У меня есть экземпляр CentOS 5, работающий на Amazon EC2. Нормальное использование ЦП колеблется в районе 10-20%. Однако примерно 4 раза за последнюю неделю использование ЦП внезапно увеличивалось до 100% и просто оставалось на постоянном уровне 100% до перезагрузки экземпляра.

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

Итак, я предполагаю, что у меня вопрос - есть ли способ настроить машину так, чтобы в любой ситуации со 100% ЦП мы отдавали приоритет SSH, чтобы позволить root войти в систему и исследовать?

Или, по крайней мере, есть ли простой способ автоматически убить любой процесс / процессы, когда возникает такая ситуация?

Кстати, это экземпляр «C1.xlarge» на Amazon, что означает, что у него 8 ядер.

Кроме того, если это поможет, машина настроена как веб-сервер, на котором запущен Plesk. И не говорите мне, что Plesk нельзя запускать в EC2, потому что я прекрасно справлялся с этим в течение нескольких месяцев ... до недавнего времени. На машине уже установлена ​​версия monit от PLesk, поэтому я бы не стал настраивать второй monit.

Вы можете попробовать изменить сценарий инициализации sshd, чтобы он запускался с хорошим значением -5 или -10. Это изменит значение для всех логинов SSH, что может вам подойти.

Легко было бы регистрировать использование ЦП всеми процессами. Что-то вроде этого:

top -l 0 > top.log 2>&1 < /dev/null &

Это будет постоянно регистрировать вывод top к top.log. Перенаправления существуют, потому что иногда я замечал проблемы с фоновыми заданиями, запускаемыми в сеансах SSH, которые не имеют STDOUT, STDERR и STDIN, привязанных к чему-либо.

В любом случае, после следующей перезагрузки вы можете просто прочитать нижнюю часть этого журнала и посмотреть, какие процессы забивают процессор.

Вышеупомянутое даст довольно много результатов. Вместо этого вы можете сделать так, чтобы он записывался каждые 5 секунд следующим образом:

top -l 0 -s 5 > top.log 2>&1 < /dev/null &

Я не знаю, как в таких случаях обрабатывать входы по ssh особым образом, но вам следует проверить свои cronjobs и файлы журнала. Особенно системный журнал, который должен записывать любое запущенное задание cron и видеть, связано ли это как-то с вашей проблемой. Тогда вы сможете определить причину своей проблемы. Возможно, это даже ошибка ядра, которая также может быть записана в системный журнал.

кажется, что где-то есть бомба вилки, истощающая пространство PID. Linux резервирует некоторые процессы / использование памяти для root, но для этого потребуется

  • вход вручную с консоли как root
  • kill -ОСТАНОВИТЬ некорректный процесс (если kill -9 какой-то другой процесс повторно разветвится и займет слот)

поскольку вы не можете войти в систему, я предлагаю установить ограничения на использование памяти, количество открытых файлов и т. д.