
Со мной уже дважды за несколько дней случалось так, что мой сервер полностью выходил из строя, то есть http, ssh, ftp, dns, smtp, в общем, ВСЕ службы переставали отвечать, как будто сервер был выключен, за исключением того, что он все еще отвечал на ping, что меня больше всего сбивало с толку.
У меня есть несколько PHP-скриптов, которые создают огромную нагрузку (на процессор и память) на сервере короткими всплесками, используемыми небольшой группой пользователей, но обычно сервер прекрасно «выживает» после этих всплесков, и когда он выходит из строя, это никогда не совпадает с такими пиками нагрузки (я не говорю, что это не может быть связано, но это не происходит сразу после них).
Я не прошу вас волшебным образом назвать мне окончательную причину этих сбоев, мой вопрос таков: есть ли один процесс, смерть которого может вызвать одновременный сбой всех этих служб? Самое смешное, что все сетевые службы выходят из строя, кроме ping. Если бы сервер съел 100% процессорного времени каким-то процессом, он бы тоже не ответил на ping. Если бы Apache упал из-за (например) сломанного скрипта php, это повлияло бы только на http, а не на ssh и dns... и т. д.
Моя ОС — Cent OS 5.6.
И самое главное, какие системные журналы мне следует просмотреть после жесткой перезагрузки сервера? /var/log/messages не показывает ничего подозрительного.
решение1
(вкратцевсе еще отвечает на пинг — это ожидаемое поведение, проверьте использование памяти)
Эхо-запросы ICMP (например, ping) обрабатываются встроенным в ядро сетевым стеком и не зависят от других компонентов.
Ядро известно как «резидентное» в памяти, что означает, что оно всегда находится в оперативной памяти и не может быть выгружено на диск, как обычное приложение.
Это означает, что в ситуациях, когда у вас заканчивается физическая память, приложения выгружаются на диск, но ядро остается там, где оно есть. Когда и физическая, и своп-память заполнены (и система больше не может управлять вашими программами), машина упадет. Однако, посколькуа)ядро все еще находится в памяти иб)она может отвечать на запросы ping без посторонней помощи, система будет продолжать отвечать на запросы ping, несмотря на то, что все мертво.
Что касается вашей проблемы, я бы сильно подозревал проблемы с памятью. Установите "sysstat" и используйте команду "sar", чтобы увидеть журнал памяти/процессора/нагрузки/загрузки ввода-вывода и т. д. Я бы ожидал, что во время сбоя вы увидите как 100% физической, так и своп-памяти.
Я бы также рассмотрел возможность посмотретьdmesgили/var/log/сообщенияна наличие признаков вызова OOM-killer (out-of-memory-killer). Это аварийная система ядра, которая начнет убивать процессы в случае исчерпания памяти. Ее эффективность во многом зависит от того, какие процессы убивает. Отдельный процесс, пожирающий память, будет эффективно убивать, а память освобождать, однако веб-сайт на основе Apache будет порождать заменяющие процессы, как только будет убивать дочерний процесс.
решение2
Обычно это проблема с подсистемой ввода-вывода или диска. Часто это будет сочетаться с чрезвычайно высокой средней загрузкой системы. Например, система, подробно описанная на графике ниже, перестала отвечать (хотя и была пингуемой), когда скрипт отработал неправильно, заблокировал кучу файлов и нагрузка выросла до 36... на системе с 4 ЦП.
Службы, работающие в оперативной памяти и не требующие доступа к диску, продолжают работать... Таким образом, сетевой стек (ping) работает, но другие службы останавливаются, когда требуется доступ к диску... SSH, когда требуется ссылка на ключ или поиск пароля. SMTP имеет тенденцию отключаться, когда средняя нагрузка достигает 30 или около того...
Когда система находится в этом состоянии, попробуйте удаленно nmap
подключиться к IP-адресу сервера, чтобы узнать, что происходит.
Вероятно, ведение журнала не работает, если проблема связана с диском или хранилищем...
Можете ли вы описать конфигурацию оборудования? Это виртуальная машина? Какова схема хранения?
Больше, чем ведение журнала, вы хотите увидеть, можете ли вы построить график производительности системы и понять, когда это происходит. Посмотрите, коррелирует ли это с определенной деятельностью.