Переполнение памяти веб-сервера CentOS - не удается войти

Несколько дней назад мой веб-сервер CentOS 6.2 с ISPconfig 3 вышел из строя до такой степени, что я не смог войти ни по SSH, ни через консоль. Консоль была полна сообщений "нехватка памяти, процесс убийства, жертва детей" или что-то в этом роде. Запрос на вход в систему через SSH появился через минуту ожидания, запрос пароля через одну или две минуты и т. Д. Система была явно сильно перегружена. Я не смог перезапустить его чисто, поэтому я сильно переустановил его. Я думал, что это была какая-то единичная ошибка, но та же самая ситуация повторилась несколько часов назад. Это рабочий сервер, и я не мог позволить себе экспериментировать, поэтому я просто увеличил объем ОЗУ (это виртуальная машина Hyper-V) с 1 ГБ до 2 ГБ и перезапустил его еще раз. Теперь он работает в течение двух дней или что-то в этом роде. На следующий день та же самая ситуация повторилась с другой подобной машиной, CentOS 6.3. Я просто перезапустил его без увеличения оперативной памяти, и теперь он работает нормально.

Я не уверен, что это такое, почему это произошло и как этого избежать. Мне кажется, что было выделено слишком много оперативной памяти, поэтому система начала выкладывать и выгружать все данные, что приводило к снижению производительности практически до остановки машины. Это sar лог со второй машины:

12:03:14 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
06:40:52 AM     all      0.10      0.00      1.59     98.31      0.00      0.00
07:37:29 AM     all      0.09      0.00      1.37     98.54      0.00      0.00
09:51:37 AM     all      0.07      0.00      1.34     98.59      0.00      0.00
11:01:13 AM     all      0.05      0.00      1.35     98.61      0.00      0.00
12:57:39 PM     all      0.09      0.00      1.60     98.31      0.00      0.00

Возможно ли, что это была какая-то атака DOS? Обе машины имеют числовые последовательные IP-адреса, так что, может быть, это то, что принимает адреса один за другим? Это указывает на некоторую слабость в настройке безопасности? Есть ли способ, как я могу более точно сказать, что случилось и почему?

Самым большим сюрпризом было то, что я не смог войти в систему и работать с системой вообще. Linux должен делать это? Или это означает, что моя конфигурация как-то не так? Нужно ли иметь какие-то настройки, чтобы запретить какой-либо процесс, потребляющий слишком много памяти? Это может произойти, или это означает, что я исказил установку?

РЕДАКТИРОВАТЬ - больше информации о настройке:

На обеих машинах установлено следующее: ISPConfig 3, Apache, MySQL, PHP, Postfix, Courier, PureFTPd, Bind (установка ISPConfig по умолчанию в CentOS). Они работают как веб-серверы с довольно низкой нагрузкой - вторая машина, с которой взят отрывок sar, обслуживала 8000 файлов в день, когда это произошло.

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

07:20:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
07:30:01 AM     all      1.15      0.00      0.27      0.38      0.00     98.20
07:40:01 AM     all      0.96      0.00      0.23      0.24      0.00     98.57
07:50:01 AM     all      1.71      0.00      0.37      1.86      0.00     96.07

Согласно журналам Apache, не было никакой необычной загрузки или исключительного числа запросов. Я нашел только эту необычную строку в журнале ошибок:

[Tue Feb 19 05:39:30 2013] [error] server reached MaxClients setting, consider raising the MaxClients setting

Это, кажется, корень проблем, не так ли?

1 ответ

Решение

Хорошо, больше никаких подсказок или ответов, поэтому вопрос, вероятно, недостаточно конкретен. Я, вероятно, приму "перегрузку веб-сервера" в качестве заключения. Однако я до сих пор не знаю, почему это произошло или это может быть какая-то атака DOS. Возможно, это особенность Apache в том, что у него не хватает MaxClients, когда он слишком долго работает? Тем не менее, решение "перезагрузить сервер, увеличить объем оперативной памяти" - это, вероятно, то, с чем я могу жить (или, по крайней мере, мне придется).

Другие вопросы по тегам