Выясняем, почему так важно отслеживать нагрузку на процессор сервера, а также рассмотрим несколько популярных утилит для мониторинга состояния сервера и загруженности CPU в частности.
Что значит нагрузка на процессор и зачем ее отслеживать?
Под нагрузкой понимается то количество ресурсов, которое «железо» компьютера тратит на выполнения одной или нескольких задач. Обычно оно отображается в процентном соотношении, где за 100% берется максимальная загрузка одного из ядер.
Наблюдение за этим значением требуется во избежание проблем, связанных с избыточной нагрузкой на чип. Потому что процессор может быть занят как полезными задачами, так и теми, что мешают реализовать потенциал устройства в полной мере.
Например, код некоторых программ может быть плохо оптимизирован. В связи с чем сервер будет расходовать больше мощностей на выполнение по умолчанию простых задач. Или же на сервер может попасть вирус, который будет отнимать часть ресурсов.
Такая «бесполезная» загрузка чипа приведет к общему снижению производительности сервера, а также приложений и сайтов, базирующихся на нем. А это приведет к потере аудитории и снижению прибыли.
Лучшие инструменты для отслеживания нагрузки на CPU сервера
Наблюдать за тем, какое количество ресурсов чипа расходуется в текущий момент, можно несколькими способами:
- с помощью инструментов, предоставляемых хостинг-провайдером, у которого вы арендовали сервер;
- с помощью специальных текстовых утилит для Linux, отображающих статистические данные о состоянии компьютера.
Мы рассмотрим оба варианта, но у вашего хостинга может не быть панели со статистикой. Поэтому я покажу такую панель на примере Timeweb, где она точно имеется. Разбираться будем на примере сервера с Linux на борту.
Подробности о мониторинге состояния сервера уточняйте у своего провайдера.
Панель управления хостингом
Timeweb (как и некоторые другие провайдеры) предоставляет статистические данные о состоянии сервера в реальном времени. В панели управления VDS/VPS есть отдельный блок, в котором отображается график с актуальной нагрузкой на процессор.
Чтобы получить доступ к информации о состоянии чипа в панели управления Timeweb:
- Заходим на страницу хостинга и вводим данные для авторизации в ПУ.
- Открываем список действующих VDS и переходим к тому, нагрузку на который нужно оценить.
На главной странице появится блок со статистикой за день. Там будет информация и по процессору, и по интернет-каналу. Все в блоке вместе с основной информацией о сервере (подразумевается операционная система и объем свободного пространства на диске).
Если перейти на вкладку «Статистика», можно будет указать временной отрезок, чтобы посмотреть уровень нагрузки в ретроспективе (на момент сбоев или жалоб посетителей). Также появится доступ к блоку «Оперативная память», где можно оценить нагрузку на ОЗУ.
Текстовые утилиты для проверки нагрузки
Если доступа к панели хостинга нет, данные о процессоре можно подглядеть в самой системе с помощью специальных приложений в терминале Linux.
Только перед началом работы с ними, надо подключиться к серверу с помощью SSH-протокола.
В macOS и Linux это делается через терминал. Открываем командную строку и вводим в нее ssh root@адрес сервера. В Windows сначала надо скачать программу PuTTY, запустить ее, найти внутри поле IP-адреса, указать в нем адрес сервера, а потом нажать ОК.
В обоих случаях нужно будет авторизоваться, используя пароль администратора, а дальнейшие команды выполнять через консоль SSH. Так что стоит ознакомиться с базовыми принципами работы терминала Linux перед началом.
IP-адрес можно разыскать в панели управления провайдера либо спросить у техподдержки. А пароль хостинг высылает на почту сразу после аренды VDS/VPS.
top
Команда top выводит в терминал Linux информацию о процессоре сервера в реальном времени. Данные обновляются каждые 5 секунд.
top показывает уровень нагрузки в процентах (поле %CPU) для каждого запущенного приложения.
Чтобы вывести статистику на экран, надо ввести в консоль top без дополнительных вводных. Появится некий аналог менеджера задач в текстовом облике. Но информацию на экране можно менять, используя горячие клавиши для управления утилитой:
- P — отсортирует выполняемые задачи по уровню нагрузки на CPU.
- M — отсортирует процессы по уровню затрачиваемой ОЗУ.
- N — по имени запущенных процессов.
- T — по времени выполнения задачи с момента последнего запуска.
- U — покажет программы, запущенные конкретным пользователем.
Вывод top можно упростить, удалив из него простаивающее процессы. Так можно сосредоточить внимание только на активных задачах, потребляющих ресурсы в моменте. Для этого команду надо слегка усложнить, добавив в конце опцию -i.
iostat
Еще одна встроенная в Linux системная утилита, отображающая статистические показатели «железа».
По умолчанию iostat отображает данные о работе устройств ввода и вывода, а также степень загруженности центрального процессора. Для анализа берутся данные на момент запуска утилиты в сравнении со среднестатистическими.
Чтобы получить данные конкретно о CPU, надо дополнить команду аргументом -c.
В отчете iostat уровень нагрузки на чип показывается в процентах для каждой запущенной программы и делится на несколько категорий.
- user — процессы, запущенные от имени пользователя.
- nice — то же, только с измененным приоритетом.
- system — процессы, напрямую связанные с операционной системой.
- idle — время в простое.
Команду можно модифицировать, указав дополнительные опции, корректирующие вывод в консоль.
Можно добавить интервал, прописав в конце количество раз, которое iostat должен вывести отчет, и периодичность этой операции. Также можно изменить формат отображения затрачиваемых ресурсов или показать расширенную статистику.
vmstat
По умолчанию эта команда Linux выводит в консоль информацию о состоянии виртуальной памяти. Но через нее можно добыть данные и о других компонентах операционной системы. Степень загруженности CPU в их числе.
vmstat как и top попеременно обновляет данные. Интервал обновления зависит от указанных опций. Например, чтобы получать свежий отчет vmstat каждые 5 секунд, надо ввести в терминал команду vmstat 5. Добавив еще одну цифру, можно указать количество отчетов.
Вывод утилиты содержит в себе несколько колонок. Последние 5 отображают информацию о процессоре (обведены в графу CPU):
- us — процент нагрузки со стороны несистемных задач, то есть тех, что запустил пользователь.
- sy — системная нагрузка на уровне ядра.
- id — время, которое процессор проводит в ожидании, не выполняя никаких задач.
- wa — время, затраченное чипом на ожидание ввода или вывода данных.
- st — процент нагрузки со стороны виртуальной машины.
Сторонние текстовые утилиты
Встроенные приложения для анализа системы покрывают базовые требования вебмастеров, но могут оказаться недостаточно эффективными для тех, кому нужна расширенная статистика и дополнительная функциональность.
Благо независимые разработчики создали с десяток инструментов для сбора статистики по нагрузке на процессор сервера. Большая их часть так же, как и встроенные приложения для мониторинга, представлена в виде текстовых утилит, запускающихся через терминал. Правда, перед использованием их нужно загрузить из подключенных к системе репозиториев.
Для этого нужно запустить менеджер пакетов, введя соответствующую команду. Например, для установки пакета nmon нужно ввести:
В дистрибутиве Ubuntu / Debian
sudo apt get install nmon
В дистрибутиве Fedora
sudo dnf install nmon
В дистрибутиве Arch Linux
pacman -s nmon
В дистрибутиве CentOS/RedHat Linux
yum install nmon
htop
Команда для установки: sudo название менеджера пакетов install nmon
У команды top есть своего рода старший брат — htop. Это модификация встроенной в Linux утилиты с расширенной функциональностью, настраиваемой статистикой и более наглядным интерфейсом.
Отображаемые в htop показатели поддаются тонкой настройке со стороны клиента. Можно удалить лишние данные, оставив только нагрузку CPU, а можно, наоборот, добавить больше показателей, если стандартных не хватает.
Внешний вид htop также можно адаптировать под свои вкусовые предпочтения. Выделить цветом запущенные процессы в зависимости от того, какое приложение отвечает за их работу, или просто раскрасить показатели эстетики ради.
Окно htop поддерживает работу в четерыхколоночном режиме. В каждой колонке можно отобразить статистику по каждому из ядер, установленных на вашем VDS. Вплоть до 128 ядер на одном экране с возможностью комфортно отслеживать нагрузку на все активные CPU.
nmon
Команда для установки: sudo название менеджера пакетов install nmon
Еще одна сторонняя утилита для системных администраторов, помогающая оценить общее состояние сервера. В отличие от htop, nmon содержит в себе меньшее количество функций и возможностей адаптации интерфейса под свои задачи.
У самой утилиты нет модификаторов запуска, она работает в одном режиме и запускается командой nmon.
Интерфейс nmon делится на три части:
- CPU Utilisation — в первой отображается нагрузка на процессор. Все ядра по списку, от 1 до последнего, и количество ресурсов, потребляемых пользователем, системой, а также находящихся в ожидании и в простое.
- CPU Utilisation Stats — статистические данные по тем же показателям, что отображаются в первой секции.
- Top Processes — список программ, отсортированный по степени «прожорливости» процессорных мощностей.
dstat
Команда для установки: sudo название менеджера пакетов install dstat
Если подход к отображению данных в вышеперечисленных утилитах почему-то не понравился, то стоит обратить внимание на альтернативу в виду dstat. В одном окне утилиты умещается больше информации, чем у аналогичных программ других разработчиков.
Показатели сервера в dstat распределены по колонкам. В первой отображается уровень нагрузки в процентах со стороны пользователя. Затем идет sys, то есть часть ресурсов, затрачиваемых системой и ее компонентами. После — простой.
Также в колонках можно найти название процесса, расходующего мощности чипа, информацию о работе оперативной памяти и накопителя (сколько данных было записано и сколько прочитано). Сетевые показатели тоже имеются.
Вывод команды dstat можно настроить под свои нужды с помощью опций. Например, чтобы отсортировать запущенные программы по нагрузке на чип и по количеству используемой в текущей момент ОЗУ, надо ввести:
dstat -c –top-cpu -dn –top-mem
mpstat
Команда для установки: sudo название менеджера пакетов install mpstat
Подходит тем, кто использует систему с несколькими процессорами. mpstat в удобоваримом виде показывает информацию по всем CPU.
В отличие от той же top, mpstat не показывает запущенные программы. В списке чередуются и нумеруются только установленные процессоры. Затем показывается, сколько ресурсов уходит на пользователя, сколько на систему, а сколько простаивает.
По умолчанию команда mpstat выводит данные по всем CPU сразу, но ее можно модифицировать:
- mpstat -P ALL — покажет информацию по действующим чипам.
- mpstat -P ALL 6 2 — покажет те же данные, но только дважды с периодичностью в 6 секунд. Для оценки нагрузки в динамике.
Подробнее с функциональностью mpstat можно ознакомиться, введя команду man mpstat.
sar
Команда для установки: sudo название менеджера пакетов install sar
Утилита для мониторинга загруженности оборудования и формирования отчетов на основе полученных данных. Часто используются для сбора информации и последующей отправки ее на электронную почту системного администратора.
В отчет sar по умолчанию входят технические показатели устройств ввода и вывода, информация о работе виртуальной памяти (подкачка страниц), данные о прерванных операциях и о том, как используется оперативная память. Ну и степень загруженности процессора, конечно.
По умолчанию sar выводит на экран среднее значение по всем собираемым показателям. Вывод можно скорректировать опциями:
- sar 4 8 — покажет статистику 8 раз с периодичностью в 4 секунды (цифры можно указать любые).
- sar -u — добавляет в отображаемые данные все установленные в систему чипы.
- sar -P 4 4 2 — отображает данные по четвертому ядру 2 раза с интервалом в 4 секунды.
Для формирования отчетов используется команда:
sar -o output.file 10 6 >/dev/null 2>&1 &
Она в фоновом режиме соберет показатели системы. Потом распределит их по нескольким файлам в директории с другими отчетами.
corefreq
Многокомпонентная низкоуровневая утилита, включающая в себя одноименный модуль ядра, демон (программу, работающую в фоновом режиме) и текстовую утилиту для управления на стороне клиента. Модуль ядра получает полный доступ к серверу и выводит данные с помощью демона, который работает с привилегиями суперпользователя, получая больше данных, чем другие подобные приложения.
CoreFreq заточен для работы с современные 64-битными процессорами из серий Atom, Core2, Nehalem и аналогичными из семьи AMD.
Чтобы включить CoreFreq:
Открываем файл с параметрами загрузка:
sudo nano /etc/default/grub
Добавляем в него строку:
GRUB_CMDLINE_LINUX=“nmi_watchdog=0”
Обновляем параметры загрузчика и перезапускаем систему:
update grub && reboot
Загружаем утилиту с зависимостями:
sudo apt-get install git dkms build-essential libc6-dev libpthread-stubs0-dev
Копируем CoreFreq с git:
git clone https://github.com/cyring/CoreFreq.git
Переходим в директорию с утилитой:
cd CoreFreq
Компилируем:
make
Устанавливаем модуль ядра:
sudo insmod corefreqk.ko
Запускаем одноименный демон:
sudo ./corefreqd -i &
Включаем текстовую утилиту CoreFreq:
./corefreq-cli
Как снизить нагрузку на процессор?
Все зависит от того, чем вызваны избыточные затраты ресурсов процессора. Для начала надо проанализировать статистику и выяснить, в какие периоды времени нагрузка чересчур возрастает и какое из приложений этот прирост провоцирует.
- Если дело в чрезмерной активности отдельных программ, то нужно приостановить их работу.
- Чтобы снизить нагрузку из-за деятельности поисковых роботов, надо сократить количество разделов сайта, которое им можно индексировать. Скрыть от ботов часть страниц можно, если указать их адреса в файле robots.txt.
- Если во всем виновата прожорливая CMS, стоит проанализировать установленные плагины. Возможно, какой-то из них работает некорректно и отнимает ресурсы, необходимые для нормального функционирования других компонентов сервера.
- Стоит сделать рефакторинг в структуре запросов в базе данных сайта.
- Проверить, нет ли на сервере вредоносного программного обеспечения.
Также не стоит забывать, что есть альтернативное решение — увеличение мощности сервера. Зачем бороться с нагрузкой, если можно сделать ее менее заметной для своего VDS? И для этого всего лишь надо арендовать более мощную «машину».
Итоги
В большинстве случаев для получения общей картины хватит статистики из панели управления. На основе данных оттуда можно сформировать план действий и попытаться исправить проблему, если таковая имеется. Ну а для тех, кто желает углубиться в суть проблемы, есть с десяток утилит для мониторинга системы.
Важен не выбор инструмента, а последующие действия, устраняющие избыточную нагрузку на процессор (опять же, если она есть) и стабилизирующие работу сайта.
Комментарии