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

Как устранить зависания сервера Linux

У меня есть несколько машин с Ubuntu Server 8.04 в удаленном месте. Примерно каждые пару месяцев один из них переставал отвечать, и его нужно было выключить и снова включить. Глядя на мои файлы журналов, кажется, что все мои процессы работают нормально, пока в какой-то момент все просто не остановится.

Я подозреваю, что это проблема с оборудованием, но я даже не знаю, как определить проблему. Существуют ли какие-либо диагностические инструменты или методы, предназначенные для выявления подобных проблем?

Я знаю, что это довольно общий вопрос, но надеюсь на общий ответ.

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

Кроме того, убедитесь, что на ваших дисках включен SMART, и посмотрите, не доживает ли один из них.

Вы можете установить munin, чтобы отслеживать их всех и видеть, что происходит.

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

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

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

При таком подходе вы можете обнаружить, например, что у вас есть процесс, который выходит из-под контроля с выделением ОЗУ, переводит систему в режим подкачки и заставляет убийцу нехватки памяти начать пробираться через ваши запущенные процессы, оставляя машину не отвечает. Без наблюдения вы бы этого не узнали.

Слишком мало информации о том, что действительно могло бы работать.

Было бы неплохо узнать, как вы определяете «перестает» реагировать? Это просто ssh, который перестает отвечать, или какая-то другая служба? Есть идеи, если консоль все еще отвечает?

Есть ли какие-либо следы в файлах журналов после того, как машина снова подключилась к сети после перезагрузки?

В любом случае, есть несколько вариантов, которые помогут вам собрать информацию:

  • Включите getty на последовательной линии, и если вы не можете позволить себе купить последовательный сервер, соедините серийные номера между машинами. Если одна машина не может быть достигнута через сеть, вы можете попытаться получить доступ через последовательный порт.
  • установить программное обеспечение для мониторинга и получить статус от lmsensors, smart tools tec.
  • отправить системные журналы на удаленную машину.