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

Что может быть причиной того, что 30+ процессов Apache потребляют всю память?

У меня есть VPS, на котором размещен сайт (http://www.tanguay.info/web) что касается 1800 уникальных посетителей в день.

Сайт работал нормально, Время отклика 3 секунды неделями.

Внезапно на Пятница в 16:00 сайт стал недоступен с время отклика более 30 секунд и с тех пор не работает. Вот график пингдома:

альтернативный текст http://tanguay.info/web/external/pingdomdown.png

Даже после многократной перезагрузки я не могу вернуть время отклика ниже 30 секунд. С помощью команды «top» я вижу, что запущено более 30 процессов Apache, которые, похоже, занимают более 90% памяти.

Что может быть причиной этого? Почему должно быть открыто так много процессов Apache, тем более что сайт и так сейчас практически недоступен? Может быть, эти процессы как-то просто не закрываются?

альтернативный текст http://tanguay.info/web/external/tooManyApacheProcesses.png

Вы находитесь на виртуальной машине на базе Virtuozzo / OpenVZ (на основе top скриншот вы выложили). Что-то еще, вероятно, забивает машину, на которой вы находитесь, поскольку этот верхний вывод на самом деле не показывает ничего ненормального (17 МБ RES для процесса Apache вполне разумно). Я бы поговорил с вашим хостинг-провайдером о том, чтобы не перегружать их серверы виртуальных машин, или найти лучшего поставщика виртуальных машин.

Статический контент не страдает, проблема скорее всего в базе данных. Просмотрите журнал медленных запросов MySQL на /var/log/mysql/mysql-slow.log. Apache mod_status также может быть полезно, он покажет страницу состояния, например этот.

Увидев все процессы, отмеченные буквой D, я думаю, что дисковая подсистема могла быть перегружена.