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

Сервер вылетает раз в час, но в это время ничего особенного не работает

Сегодня мой сервер Ubuntu 12.04 начал давать сбой один раз в час. На самом деле это точно в минуту: 32, каждый час. Похоже, это настоящий сбой ядра, т.е. в / var / log / syslog ничего нет, просто останавливается. Я даже написал сценарий, который распечатывал время каждую секунду, чтобы попытаться определить точное время, и наблюдал, как приближается следующий сбой, и лучшее, что я могу сказать, это примерно 32 минуты и 13 секунд после часа.

Но у меня в то время не было работ CRON, ничего. Те, что у меня есть, - это те же самые Perl-скрипты, которые я запускал годами, и ничего особенного не делает. Я ничего не менял на сервере, наверное, несколько недель, и определенно ничего важного. Я просмотрел все источники запланированных задач, которые смог найти. В это время ничего особенного не происходит, за исключением того, что сервер выходит из строя, не оставляя никаких следов причин.

Когда происходит сбой, у меня нет выбора, кроме как перезагрузить его через веб-сайт хостинговой компании, что до сих пор было моим решением, но сейчас 4 часа ночи, и мне нужно немного поспать. Но если я это сделаю, мой сайт отключится в течение часа. Приветствуется любая помощь: а) как найти эту задачу, которая выполняется и вызывает сбой, если это так, или б) как отслеживать, что происходит, когда это не отображается в syslog или dmesg.


Решено. Я связался с хозяином. По-видимому, они установили новое программное обеспечение для мониторинга серверов, которое отметило, что у меня слишком много дискового ввода-вывода. Вместо того, чтобы сказать мне, это их программное обеспечение просто убило мой сервер. Он работает каждый час: 32 минуты.

  • Вам стоит попробовать процесс исключения. Итак, примерно через 30 минут после часа остановите cron. Да, я знаю, что вы не думаете, что это cron, но все же делаете это. Если не произойдет сбой через 32 минуты, то он был cron, и вы можете попробовать удалить половину скриптов cron, которые выполняются в это время, пока не найдете проблемный. Если он ВСЕ ЕЩЕ вылетает с отключенным cron, то в следующий раз через 30 минут вы также отключите половину запущенных демонов, пока не найдете проблемный. (Если система по-прежнему вылетает на 32, даже если все отключен, значит либо ваша система плохо взломана, либо у вас в это время проблемы с электропитанием, либо вы являетесь виртуальной машиной, и физический хост в это время что-то делает)

  • установить последовательную консоль (лучше) или сетевую консоль (проще). Таким образом, когда он выйдет из строя, вы можете получить журнал на другой машине.

  • в качестве временного облегчения установите watchdog пакет с softdog модуль (а еще лучше аппаратный, если ваше оборудование его поддерживает). Это не решит проблему, но может позволить вам немного поспать, пока вы не исправите ее.

Вполне вероятно, что некоторые из ваших старых сценариев «всегда работал правильно» испытывают проблемы с новыми данными или их слишком много, поэтому они съедают все ресурсы. Вы всегда должны настраивать ulimit ограничения так не бывает. Также возможно, что сценарии обращаются к поврежденной области диска или пытаются получить доступ к другому проблемному оборудованию, что вызывает сбой. Последовательная консоль должна сказать ...

Может быть другая причина.

  1. Есть ли какое-либо конкретное приложение (веб-сервер), которое потребляет больше памяти (например, в случае плохой настройки / оптимизации не удается освободить память)

  2. Попытайтесь захватить все процессы, которые потребляют больше cpu и memory каждую минуту (может помочь в вашем сценарии найти причину) - напишите сценарий для сбора этой информации (перенаправьте вывод в файл) и настройте его в crontab.

Попробуйте вот так смотреть -n 10 top # (каждые 10 секунд повторять команды).

наилучшие пожелания