Главный вывод указывает, что у Вас заканчивается память. Ничто в вершине (ЦП) пользователи, которых Вы отправили, не является преступником. В то время как Вы могли уехать, главное выполнение в отсортированном по памяти режиме (нажмите капитал-M в вершине для переключения), Вы - далеко более обеспеченный сбор данных к диску для более позднего анализа. В то время как sar
полезно в целом, это бесполезно для материала для каждого процесса; для этого Вам нужно pidstat
(в том же пакете как sar
-- sysstat
на Debian). К сожалению, pidstat
испытывает недостаток в некоторых объемных тонкостях сбора данных sar
, но не трудно починить что-то, что это получит необходимые данные на диск для более позднего прочтения.
Мое предположение - то, что Ваша система подкачивает себя до смерти из-за веб-запросов ожидания, когда база данных блокирует. У Вас, вероятно, есть один или два запроса, которые работают эпизодически - возможно от cronjob - которые вызывают одну из таблиц базы данных, которая часто используется для блокировки. После того как это делает, все запросы запускают поддержку позади него, пока система не начинает подкачивать. После того как это начинает происходить, это - конец его.
Проверьте свой медленный журнал и проверку на периодические запросы, которые работают в течение нескольких часов после того, когда катастрофические отказы обычно происходят.
Используйте mytop или любую другую утилиту, которая покажет Вам список текущих рабочих запросов в MySQL, чем попытка узнать, где Вы используете, чем. Похож на выполнения mysql, что-то тяжелое и сервер начинают подкачивать данные, одновременно апач обрабатывает старые и новые запросы и начинает подкачивать их также
Взгляните на свою конфигурацию apache. в памяти без подкачки .
Если вы начнете менять местами (которые у вас есть), ваш apache будет работать как полнейшая собака. В этот момент любое новое соединение приведет к тому, что apache будет порождать еще больше дочерних элементов (поскольку все ваши текущие дочерние элементы заняты).
Если количество процессов apache, которые умещаются в памяти, недостаточно для обслуживания вашего запросов, вам нужно больше памяти или для оптимизации приложения. Первое, что нужно посмотреть то ваши запросы mysql. Проверить индексы. Любой медленный запрос станет узким местом вокруг которого будут синхронизироваться все ваши процессы apache, т.е. если ваш самый медленный запрос принимает 1 секунда, и у вас есть только 5 процессов apache, которые могут поместиться в памяти, тогда вы не сможет обрабатывать более 5 запросов в секунду.
Майк.
Средняя нагрузка при обычном использовании немного высока. 1,68? Это не лучшее число для интерактивного сервера.
Вы перешли с 271 до 500 процессов. Вверху нет ничего, что показывало бы, куда идет память, но я подозреваю, что у вас много процессов, занимающих доли процента от общего объема ОЗУ. Например, процессы Apache.
Похоже, что-то создает узкое место в ЦП, из-за которого запросы накапливаются, пока у вас не закончится ОЗУ. Это может быть работа cron, или, может быть, само приложение требует процессора.
Я готов поспорить, учитывая среднюю нагрузку 1,68 при регулярном использовании и высокую нагрузку на MySQL, то есть неоптимальный запрос.
Если приложение может ограничивать количество одновременных пользователей, это может быть неубедительным (но эффективным) способом временно справиться с ситуацией. Начните регистрацию с помощью sar и включите журнал медленных запросов.
Все это сказано ... это то, за что сисадминам платят деньги. Наверное, это не так просто, как посмотреть на вывод top и прописать решение. выполняется неоптимальный запрос.
Если приложение может ограничивать количество одновременных пользователей, это может быть неубедительным (но эффективным) способом временно справиться с ситуацией. Начните регистрацию с помощью sar и включите журнал медленных запросов.
Все это сказано ... это то, за что сисадминам платят деньги. Наверное, это не так просто, как посмотреть на вывод top и прописать решение. sa неоптимальный запрос.
Если приложение может ограничивать количество одновременных пользователей, это может быть неубедительным (но эффективным) способом временно справиться с ситуацией. Начните регистрацию с помощью sar и включите журнал медленных запросов.
Все это говорит ... это то, за что сисадминам платят деньги. Наверное, это не так просто, как посмотреть на вывод top и прописать решение. Деньги, которые вы потратите на то, чтобы заставить вашего разработчика исправить это, вероятно, лучше было бы потратить заранее на системного администратора, чтобы внимательно изучить производительность системы.
(dovecot - это сервер imap / pop3. Sh на apache подозрительно , но ваш разработчик может это посмотреть.)
поверх - это то, что вам нужно. http://www.atoptool.nl/ . Доступно везде, где не продаются прекрасные дистрибутивы. ;)
Не забудьте включить включенный демон на уровнях загрузки init / systemd. Затем вы можете использовать
atop -r /var/log/atop/<rawfile>
для просмотра улучшенного верхнего интерфейса, который может ДВИГАТЬСЯ НАЗАД И ВПЕРЕД во времени с помощью 't' и 'T', и агрегировать ресурсы, используемые для всех программ, работающих с тем же именем (также известного как 'apache' или ' httpd '). Очень полезно посмотреть, что съело вашу оперативную память и SWAP убивает ваш ящик. Среди МНОГО ДРУГОГО.
наверху действительно "лучший верх". Я не знаю, почему все больше людей не используют его.
Я согласен с Майком в том, что конфигурация вашего веб-сервера в настоящее время принимает больше подключений, чем может обработать. Ограничение количества запросов является частью решения по защите вашей системы, но для сохранения доступности вашей службы вам необходимо исследовать причины нарастания трафика (анализ журналов) и уменьшить количество резидентных Запросы. Последнее делается с настройкой ваших сообщений поддержки активности, кэшированием и оптимизацией базы данных - дополнительным анализом журналов. Также существует множество проверок, которые вы должны выполнить в своей операционной системе - чтобы убедиться, что вы используете правильные параметры монтирования, планировщик io, балансировку irq и т. Д.
Убедитесь, что mysql не настроен на использование чрезмерного объема памяти с помощью mysqltuner .pl, и что избыточное выделение памяти отключено.
В конечном итоге может потребоваться добавление дополнительной емкости оборудования, но часто это дешевле начните с этого, а не тратите время и деньги на выявление и устранение проблемы, особенно если вы работаете в очень небольших масштабах.