Анализ нагрузки на сервер
Как отслеживать загрузку процессора, памяти, диска и сети на Linux-сервере.
Нагрузка на сервер — процент использования ключевых ресурсов: процессора (CPU), оперативной памяти (RAM) и дискового пространства. Анализ этих показателей помогает быстро выявить причины медленной работы.
Аппаратная часть сервера состоит из четырёх основных компонентов: процессор, память, диск и сетевой интерфейс. Анализ нагрузки сводится к сбору и интерпретации статистики по каждому из них.
Процессор
Для базового мониторинга CPU используется утилита top:
top
Пример вывода:
top - 13:29:39 up 7 days, 1:10, 1 user, load average: 0.03, 0.03, 0.00
Tasks: 104 total, 2 running, 102 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 1.3 si, 0.3 st
MiB Mem : 969.5 total, 68.8 free, 635.9 used, 264.8 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 106.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
823 mysql 20 0 1852008 401812 0 S 1.0 40.5 81:24.20 mysqld
13 root 20 0 0 0 0 R 0.3 0.0 26:11.00 rcu_sched
695 redis 20 0 66776 4216 2100 S 0.3 0.4 19:55.21 redis-server
Ключевые показатели:
us— нагрузка от пользовательских процессов. Высокое значение означает, что приложение активно использует CPU.id— простой процессора. В норме должен быть высоким — от 80 до 100%.wa— ожидание операций ввода/вывода. Высокое значение указывает на перегрузку дисковой подсистемы.
Загрузка процессора (us) не должна стабильно превышать 20%. Если превышает — стоит рассмотреть оптимизацию приложения или масштабирование.
Развёрнутую статистику по каждому ядру даёт утилита mpstat из пакета sysstat:
apt-get install sysstat
mpstat -P ALL
Пример вывода:
Linux 5.15.0-46-generic (dsde1139-22869.fornex.org) 09/06/2022 _x86_64_ (1 CPU)
02:37:21 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:37:21 PM all 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
02:37:21 PM 0 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
Для наглядного мониторинга в реальном времени удобна утилита htop:
apt-get install htop
htop
Мониторинг процессора в htop
Память
Для проверки использования оперативной памяти используется команда free:
free
Пример вывода:
total used free shared buff/cache available
Mem: 992724 655200 73968 86748 263556 104972
Swap: 0 0 0
Особое внимание следует уделить показателю Swap — он отражает использование дискового пространства в качестве памяти, когда RAM заканчивается. Само по себе малое количество свободной RAM не критично, но рост Swap требует немедленных мер: добавления памяти или распределения нагрузки между несколькими серверами.
Для детального анализа памяти используется:
cat /proc/meminfo
Пример вывода:
MemTotal: 992724 kB
MemFree: 73192 kB
MemAvailable: 104864 kB
Buffers: 10856 kB
Cached: 226868 kB
SwapCached: 0 kB
...
Диск
Проверку дисковой подсистемы начните с просмотра свободного места:
df -h
Пример вывода:
Filesystem Size Used Avail Use% Mounted on
tmpfs 97M 732K 97M 1% /run
/dev/vda1 9.8G 8.5G 846M 92% /
tmpfs 485M 0 485M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 97M 0 97M 0% /run/user/0
Столбец Use% показывает процент занятого места на каждом разделе.
Для мониторинга операций чтения и записи в разбивке по процессам используется iotop:
apt-get install iotop
iotop
Пример вывода:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s ?unavailable? init
2 be/4 root 0.00 B/s 0.00 B/s ?unavailable? [kthreadd]
...
Ключевые показатели:
Actual DISK READ— фактический объём данных, читаемых с диска (с учётом кэша).Actual DISK WRITE— фактический объём данных, записываемых на диск.
Рекомендации при высокой нагрузке на диск:
- Много чтений из приложения — включите кэширование APC.
- Много чтений из базы данных — проверьте настройки БД.
- Много чтений от веб-сервера — рассмотрите использование HTTP-кэша.
- Много записей — убедитесь, что отключены все логи доступа и отладки; скорее всего, основной источник записей — база данных или загружаемые файлы.
Сеть
Утилита cbm показывает сетевой трафик в реальном времени:
apt-get install cbm
cbm
Пример вывода:
Interface Receive Transmit Total
lo 0.00 B/s 0.00 B/s 0.00 B/s
eth0 35.90 kB/s 758.75 B/s 36.65 kB/s
Высокий сетевой трафик сам по себе не является проблемой, однако показатели, близкие к пиковым, сигнализируют о необходимости масштабирования.
Общая статистика
Утилита dstat отображает сводную статистику по всем подсистемам с интервалом в одну секунду:
apt-get install dstat
dstat
Пример вывода:
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 97 0 0| 35k 29k| 0 0 | 0 0 | 683 702
1 0 99 0 0| 124k 0 | 39k 1162B| 0 0 |1003 822
3 4 86 6 1|3580k 8776k| 37k 522B| 0 0 |1161 1018
Ключевые столбцы:
total-cpu-usage— загрузка процессора.dsk/total— активность дисковой подсистемы.net/total— сетевая активность.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!