Анализ нагрузки на сервер позволит быстро понять причины медленной работы. Это необходимо делать еще и для того, чтобы вовремя планировать покупку новых серверов.
Аппаратная часть любого сервера состоит из 4 основных компонент:
Анализ загруженности сервера заключается в сборе и обработке статистики каждой из этих компонент.
Первым делом следует проверить процессор. Самый быстрый способ – использовать top:
top - 22:20:45 up 67 days, 8:04, 2 users, load average: 0.05, 0.03, 0.05 Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie %Cpu(s): **0.0 us**, 0.0 sy, 0.0 ni,**100.0 id**, **0.0 wa**, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 508936 total, 461096 used, 47840 free, 43056 buffers KiB Swap: 0 total, 0 used, 0 free, 237892 cached PID USER PR NI VIRT RES SHR S **%CPU** %MEM TIME+ COMMAND 8867 www-data 20 0 80316 3256 1012 S 0.3 0.6 0:16.06 nginx 30809 mysql 20 0 844m 63m 3332 S 0.3 12.9 38:30.93 mysqld
Необходимо обратить внимание на выделенные участки. Загрузка процессора обычно не должна превышать 10…20%. Исключение составляют сервера специального назначения (например, пережиматоры фоток или медиа данных). Следующие показатели наиболее важные для анализа:
Более развернутую статистику можно получить используя утилиту mpstat из пакета sysstat:
apt-get install sysstat mpstat -P ALL
Покажет детали по всем процессорам на сервере:
10:30:26 PM CPU **%usr** %nice %sys **%iowait** %irq %soft %steal %guest %gnice **%idle** 10:30:26 PM all 0.47 0.00 0.22 0.07 0.00 0.01 0.03 0.00 0.00 99.20 10:30:26 PM 0 0.47 0.00 0.22 0.07 0.00 0.01 0.03 0.00 0.00 99.20
Инструмент htop умеет показывать нагрузку на процессор в удобном виде:
apt-get install htop htop
**CPU[|||||||| 11.3%]** Tasks: 62, 93 thr; 1 running Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||170/497MB] Load average: 0.15 0.05 0.06 Swp[ 0/0MB] Uptime: 67 days, 08:22:09 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 9377 root 20 0 24596 2064 1372 R 0.5 0.4 0:00.22 htop 9458 www-data 20 0 315M 7328 2824 S 0.0 1.4 0:00.50 php-fpm: pool www
Если показатель загрузки процессора (us в top’e) превышает 20%, необходимо оценить возможность оптимизации приложения. Если возможная оптимизация уже была выполнена, необходимо приобретать дополнительные сервера.
В случае высокого показателя ожидания I/O (wa в top’e), необходимо провести дальнейший анализ дисковой и сетевой подсистемы (ниже).
Прежде всего необходимо определить количество занятой и свободной памяти:
free
Покажет данные об использовании памяти:
total used **free** shared buffers cached Mem: 508936 480540 **28396** 0 47552 258912 -/+ buffers/cache: 174076 334860 **Swap: 0 0 0**
## Результат команды free
Важно обратить внимание на значение free. Это количество свободной памяти. Очень важным показателем является Swap. Это используемое место на диске в том случае, когда оперативной памяти перестает хватать.
Более подробную информацию об использовании оперативной памяти можно получить так:
cat /proc/meminfo
Среди прочего увидим такие сведения:
MemTotal: 508936 kB **MemFree: 28148 kB** Buffers: 47836 kB Cached: 259388 kB SwapCached: 0 kB Active: 245556 kB Inactive: 178600 kB ... **SwapTotal: 0 kB** ...
Малое количество свободной оперативной памяти не является проблемой. Но такая ситуация является предлогом для пристального наблюдения за сервером.
В случае же, если начинает расти Swap, необходимо срочно принимать меры:
Старайтесь всегда удерживать используемый своп нулевым.
Дисковая подсистема может быть нагружена, когда приложение работает с файлами. Кроме этого, диски может нагружать работа с базой данных.
Начать анализ дисков следует с проверки свободного места:
df -h
Покажет результат по всем разделам:
Filesystem Size Used Avail **Use%** Mounted on rootfs 20G 2.4G 17G **13%** / udev 10M 0 10M **0%** /dev tmpfs 5.0M 0 5.0M **0%** /run/lock
Колонка Use покажет занятое место. Для основных разделов старайтесь удерживать значение не выше 90%.
Инструмент iotop умеет показывать развернутую загрузку диска.
apt-get install iotop iotop
Также будет видно распределение по процессам, которые работают с диском:
Total DISK READ : **0.00 B/s** | Total DISK WRITE : **2.10 M/s** Actual DISK READ: **0.00 B/s** | Actual DISK WRITE: **218.22 K/s** TID PRIO USER **DISK READ DISK WRITE** SWAPIN IO> COMMAND 30835 be/4 mysql **0.00 B/s 2.95 K/s** 0.00 % 0.07 % mysqld 10273 be/4 www-data **0.00 B/s 194.63 K/s** 0.00 % 0.00 % php-fpm: pool www
В примере два процесса – mysqld и php-fpm (это php приложение) – используют операции записи на диск. Необходимо обратить внимание на показатели:
Если диск подвержен большому количеству чтений, правильными вариантами поведения будут:
Большое количество записей на диск обычно свидетельствуют о необходимости масштабироваться.
Утилита cbm позволяет увидеть сетевой трафик в реальном времени:
apt-get install cbm cbm
Увидим данные об объеме приема и передачи в секунду:
Interface Receive Transmit Total lo 10.07 MB/s 10.07 MB/s 20.13 MB/s eth0 73.15 kB/s 2.44 MB/s 2.51 MB/s
Высокий сетевой трафик сам по себе не является проблемой. Но близкие к пиковым показатели указывают на необходимость масштабироваться в ближайшем будущем. Например, средний трафик в 95 Мбит на интерфейсе в 100 Мбит скорее всего будет означать, что текущего сервера вскоре будет недостаточно.
Удобная утилита dstat покажет общую статистику сервера в реальном времени:
apt-get install dstat dstat
Увидим данные о системе с интервалом в одну секунду:
----**total-cpu-usage**---- -**dsk/total**- -**net/total**- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 99 0 0 0| 873B 18k| 0 0 | 0 0 | 33 75 0 0 100 0 0 0| 0 48k| 640B 1550B| 0 0 | 31 80 0 0 100 0 0 0| 0 0 | 422B 1110B| 0 0 | 29 66 0 0 100 0 0 0| 0 0 | 590B 1110B| 0 0 | 32 70 1 0 99 0 0 0| 0 0 | 478B 1110B| 0 0 | 31 66 0 0 100 0 0 0| 0 0 | 814B 1110B| 0 0 | 34 63 0 0 100 0 0 0| 0 0 | 814B 1110B| 0 0 | 39 70 0 0 100 0 0 0| 0 20k| 814B 1110B| 0 0 | 40 75
Внимание следует обратить на:
Не забывайте, что проблемы лучше предупреждать. Поэтому, обязательно используйте систему мониторинга для автоматического отслеживания указанных характеристик.
Visual Code от Microsoft, вероятно, один из самых популярных редакторов кода. Разработчики любят его за…
Япония сама по себе — сплошной киберпанк. Это заметил даже культовый писатель жанра Уильям Гибсон,…
Сам по себе телефон Айфон 17 Про Макс – отличный подарок. У него красивая заводская…
На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…