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

Зависание сервера - как отлаживать

Я запускаю виртуальный сервер Debian с Apache, PHP, MySQL. Есть только 1 веб-сайт с очень низким трафиком, но сервер очень часто (почти каждый день) зависает и не отвечает.

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

Как я могу узнать, что вызывает зависания?

Linux vm2797 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux

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

Захват журналов на машину, на которой происходит сбой, - плохая идея: вы всегда потеряете большинство импортируемых (прочитанных последних) строк журналов.

man rsyslog.conf дает информацию о перенаправлении на другую машину и о том, как настроить прослушивание сообщений журнала.

Журналы будут отображаться в системном журнале хоста с предварением имени сервера, с которого они пришли.

На стороне прослушивания 'man rsyslogd' предоставит вам параметры запуска, которые затем можно установить в / etc / default / rsyslog (вам может потребоваться -4 или -6). Вы можете проверить его прослушивание с помощью lsof -p pid_of_rsyslogd

Если вы ничего не видите в файлах / var / log / syslog или / var / log / messages, я рекомендую вам использовать любой инструмент записи состояния системы. Я использую nmon (в режиме захвата данных) для мониторинга своих систем.

Вы можете найти это Вот

  • Используйте kdump-kernel.
  • Сделайте снимок виртуальной машины с помощью VM-Admin, включая память для криминалистического анализа.
  • Включите SysRQ и пусть ваша виртуальная машина / консоль-администратор выдаст команду sync, чтобы журналы записывались на диск.

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

/var/log/syslog
/var/log/messages
/var/log/apache2/error.log
/var/log/mysql*

было бы хорошее место для начала.