Как выяснить, что вызывает случайные скачки средней нагрузки?

Как выяснить, что вызывает случайные скачки средней нагрузки?

У меня проблема со средними показателями нагрузки на моих выделенных компьютерах Debian GNU/Linux. На обоих (2 из них) запущены MySQL + программное обеспечение пользовательского игрового сервера — небольшая «MMORPG» (совсем не огромная). Использование ЦП и памяти в порядке. Использование ЦП обычно < 5%. Использование ОЗУ достигает примерно 80–90%, но всегда есть куча свободной, кэшированной или буферизованной памяти. Использование подкачки равно 0.

При мониторинге нагрузки с помощью uptime, top или любой другой команды, которая ее показывает, она случайно подскакивает до чего-то вроде 4 или даже больше. Это, очевидно, проблема, особенно учитывая, что у обоих блоков «всего» 2 ядра. После волшебного скачка средней нагрузки она начинает плавно снижаться, что говорит о том, что это был действительно временный скачок в использовании ресурсов. Использование ЦП всегда составляет 0-5%, при максимуме 10%, когда мне удавалось смотреть на top с частотой обновления в 1 секунду в течение примерно 15 минут.

Я пробовал некоторые инструменты, такие как htop, vmstat, dstat и т. д., но безрезультатно. Вот журнал для тех, кому интересно:

http://www.k-zodron.com/log.txt

За исключением появления в начальных строках, загрузка ЦП почти не увеличивается, в то время как нагрузка подскакивает до астрономических значений. Я не супер-эксперт в этом деле, но запись 4 КБ на диск не звучит так, как будто это может быть узким местом ввода-вывода.

Я также запустил MySQL Tuning Primer Tool, и он сообщает, что все в порядке.

Есть идеи, как отследить и решить проблему? Спасибо!

Редактировать

http://www.k-zodron.com/munin/

Статистика Munin обновляется примерно каждые 5–10 минут.

решение1

может ли быть так, что mysql использует временные таблицы? можете ли вы добавить несколько диаграмм munin к io stat..? цифры io в предоставленном журнале кажутся невероятно низкими.

каков ваш рабочий набор - данные удобно размещаются в памяти [кажется, да]? делаете ли вы время от времени много записей в SQL [судя по журналу - вообще никаких]?

возможно ли, что у вас внезапно резко возросло количество одновременных запросов [sql или к вашему пользовательскому серверу]? что говорит cat /proc/net/ip_conntrack|wc -l? что он показывает во время пиков нагрузки?

можешь включить mysqlмедленное ведение журнала запросов- например, все > 1 или 2 сек?

подключены ли ваши диски напрямую к серверу или, может быть, это iscsi / nfs? можете ли вы проверить состояние дисков [smart] / состояние raid? может быть, один из дисков выходит из строя... или, может быть, вы можете запустить простой тест производительности диска io в непиковое время, чтобы убедиться, что вы получаете достойную скорость чтения/записи.

или может быть что-то некрасивое отображается в dmesg?

правка: проверьте, коррелирует ли netstat |wc -l с нагрузкой

проверьте, коррелирует ли ps axms|wc -l с нагрузкой

проверьте, коррелирует ли lsof |wc -l с нагрузкой

[ желательно взломать небольшие плагины munin, чтобы они попали в чарты ].

решение2

Вам нужно больше метрик. Я использую ganglia для сбора различных значений, классических: процессор, память, сеть, дисковый ввод-вывод и т. д.; метрик на основе сервисов: http-запросы, запросы MySQL и медленные запросы и т. д.; и метрик на основе приложений, например, сколько пользователей подключено к игре или сколько раз приложение вызывает критическую функцию.

Анализ этой информации и сравнение с пиками нагрузки могут дать вам лучшее представление о том, что происходит в вашей системе.

Связанный контент