Мониторинг ресурсов сервера — ключевая часть работы с сервером, позволяющая поддерживать систему в работоспособном состоянии и своевременно реагировать на потенциальные проблемы.
В этой статье мы рассмотрим, как мониторить ресурсы сервера Linux, как выявить проблемы производительности и что можно сделать, чтобы быстро их исправить.
Иногда на сервере может возникнуть ситуация, когда ресурсы почти исчерпаны.
Это может проявляться в виде замедления работы системы, сбоев или ошибок в логах.
Для мониторинга использования памяти на сервере можно использовать следующие утилиты:
free: Покажет общую информацию о памяти, включая физическую память, swap, и свободные ресурсы.
Опция -h отображает данные в удобном формате с единицами (GB, MB).
free -h
Пример вывода:
В этом случае занята почти вся память used, мало available и free
| Поле | Описание | Признаки проблем |
|---|---|---|
| total | Объём всей доступной оперативной памяти. | Нет. Это физический объём ОЗУ — не изменяется. |
| used | Занятое место в памяти, включая кэшированные и буферизированные данные. | Если почти всё занято, стоит анализировать дальше. |
| free | Полностью свободная память, не используемая ни процессами, ни кэшем. | Если почти 0, но доступно (available) много, это нормально. |
| shared | Память, используемая для общения между процессами (например, tmpfs). | Если большое значение, стоит проверить tmpfs. |
| buff/cache | Память, выделенная под буферы и кэш ядра для ускорения операций. | Высокое значение — это нормально. Проблемы — если буфер не сбрасывается при нагрузке. |
| available | Примерно оценённый объём памяти, доступный новым процессам. | Если очень мало (< 200–300 МБ), возможно, система близка к переполнению ОЗУ. |
| Swap total | Общий объём файла/раздела подкачки. | Если swap мал или равен 0, ОЗУ может быстро исчерпаться. |
| Swap used | Используемый swap (дополнительная память на диске). | Если активно используется swap, это указывает на нехватку ОЗУ. |
Можно проверить чем занята память, с помощью htop.
В htop можно отсортировать процессы по уровню потребления ресурсов, нажав на нужный столбик.
В случае оперативной памяти это MEM.
Если вы видите, что один из процессов потребляет слишком много памяти, его можно завершить, используя команду:
pkill -f <имя_процесса>
Или прямо из htop, выбрав его курсором, нажав F9 и Enter.
На скриншоте видно, что большую часть памяти потребляет процесс bash memory_stree.sh, который был искусственно создан для демонстрации.
В этом случае процесс не нужный и его можно просто завершить.
Для мониторинга можно использовать htop или top, аналогично как и в случае с оперативной памятью.
mpstat: можно использовать для подробного анализа использования CPU.
apt install sysstat
mpstat 1 5
1 — интервал обновления (в секундах).
5 — количество обновлений.
В этом случае большой процент %usr и низкий %idle говорит о большой нагрузке на CPU.
| Поле | Описание | Признаки проблем |
|---|---|---|
| %usr | Процент времени, затраченного пользователями (user time) на выполнение процессов в пользовательском пространстве. | Если значение > 70–80%, приложения потребляют много CPU. |
| %nice | Процент времени на задачи с пониженным приоритетом (nice). | Высокие значения — фоновые задачи перегружают CPU. |
| %sys | Процент времени, затраченного на системные (ядро) процессы (system time). | Высокое значение (> 20%) указывает на проблемы. |
| %iowait | Процент времени, ожидаемого ввода/вывода данных (I/O). | Если > 10–15%, диск или сеть могут быть узким местом. |
| %irq | Время обработки аппаратных прерываний. | Высокие значения могут указывать на проблемы с драйверами. |
| %soft | Время обработки программных (soft) прерываний. | Проблемы с сетью или виртуализацией при высоких значениях. |
| %steal | Время, «украденное» гипервизором в виртуальных машинах. | Если > 5%, нехватка ресурсов на хосте виртуализации. |
| %guest | Время, потраченное на виртуальные машины. | Если высокое — перегрузка в гостевых системах. |
| %gnice | Время в гостевых машинах с пониженным приоритетом. | Обычно низкое. Растёт при интенсивных фоновых задачах. |
| %idle | Процент времени простоя CPU. | Если близко к 0%, CPU перегружен. |
Проверим что потребляет больше всего ресурсов с помощью htop.
Видно, что больше всего тратит приложение node.js и скрипт cpu_load.py, запущенный для демонстрации перегрузок CPU.
Его можно остановить с помощью pkill или через htop.
mstat выводит, что CPU почти не потребляется.
Для теста дадим нагрузку на веб сервер, опять увидим повышенную нагрузку.
df: для мониторинга использования дискового пространства.
Показать все диски, разделы и их заполняемость:
df -h
Тут видно, что почти весь диск занят.
Что бы узнать, какие файлы занимаю больше всего места (топ 10) можно использовать утилиту du:
du -h / --max-depth=1 2>/dev/null | sort -rh | head -10
Но может быть проще установить ncdu, это более удобный способ анализировать место.
sudo apt install ncdu
ncdu /
Вы увидите интерактивный вывод, сможете перемещаться по директориям с помощью стрелок.
apt
sudo apt-get clean
sudo apt-get autoremove
journalctl --vacuum-size=100M
rm -rf /tmp/*
Если на сервере установлено несколько версий ядра, старые версии могут занимать много места.
Чтобы увидеть, какие версии установлены, используйте:
dpkg --list | grep linux-image
Если некоторые версии вам не нужны, их можно удалить:
apt-get remove --purge linux-image-<version>
fstrimДля серверов с SSD-хранением полезно периодически выполнять команду fstrim, которая освобождает пространство на диске, очистив блоки, которые больше не используются:
sudo fstrim -v /
/usr/srcПапка /usr/src обычно содержит исходные коды для компиляции, которые занимают много места.
Если вы уверены, что они больше не нужны, можно удалить их:
rm -rf /usr/src/*
Важное замечание: Удаление данных из каталогов вроде /usr/lib или /usr/src может нарушить работу системы, если удалены важные библиотеки или исходные коды.
Рекомендуется предварительно проверить, используются ли эти файлы системой, используя команды вроде dpkg или apt.
Регулярное использование инструментов для анализа памяти, процессора и диска, а также системных журналов и автоматизации мониторинга позволяет поддерживать сервер в работоспособном состоянии.
Не забывайте о безопасности при удалении файлов и всегда проверяйте, что именно вы удаляете, чтобы не затронуть работоспособность системы.