Как определить какой сайт создает нагрузку на Unix-сервер?

есть Debian-сервер в облаке Selectel



потребление за день периодически подскакивает в 4 раза, из них 90% расхода идет по диску, а именно по статьям



Диск: запросов на чтение 50%

Диск: запросов на запись 22%

Диск: прочитанный объём 24%



На сервере стоит ISPmanager — лимиты bandwidth подсказку не дают



По результатам грешу на своп, но как определить источник проблем? хотя бы до папки, в идеале до скрипта…




root@srv:~# free
total used free shared buffers cached
Mem: 262144 259424 2720 0 3588 29024
-/+ buffers/cache: 226812 35332
Swap: 524284 149628 374656

  • Вопрос задан
  • 5805 просмотров
Пригласить эксперта
Ответы на вопрос 4
@Dzen_Marketing
Если просаживается диск, то с большой долей вероятности это работа с БД, у вас же ютуб не хостится?
Так как БД в большинстве случаев MySQL, то поставьте Percona, там в стате показывается какой юзер какой лоад даёт.
Но я бы для начала смотрел iotop и иже с ними, чтобы локализовать сервис жрущий диск
Ответ написан
@Stormix
Если swap используется, это убивает производительность к чертям всегда.

Если есть подозрения на «что-то еще», то можно попробовать разделить пулы процессов обработчиков скриптов для каждого из сайтов (по пулу на сайт или пачками, методом половинного деления, например. В зависимости от того, как быстро вам нужно найти виновника и как много ресурсов у вас есть) и с помощью того же iotop мониторить нагрузку.

Конечно, вам не будет сильно интересно постоянно смотреть в iotop, поэтому можно впилить его в Cacti или Zabbix (мы Cacti используем, довольны). Через день на графике увидите виновника.

Как разделять пулы — очень зависит от того, какой у вас язык программирования и как скрипт запущен. Например, в связке nginx+php5-fpm достаточно разделить пулы fpm, и настроить upstream'ы nginx для каждого из сайтов соответственно.
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
NewRelic может показать виновника (именно скрипт и запрос). Не уверен, есть ли такое в бесплатной версии, но, чтобы решить проблему, как вариант, можно купить на месяц платный тариф.
Ну или бесплатно можно включить mysql slow query log, и руками потом парсить — не самое приятное времяпрепровождение.
Ответ написан
Комментировать
@Swartalf
atop/iotop/htop помогут найти сам процесс.
если это будет mysql, то с помощью mytop(my_top|mtop в разных дистрах по разному) можно будет конкретизировать сам запрос/функцию/процедуру
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы