Мониторинг ресурсов сервера — ключевая часть работы с сервером, позволяющая поддерживать систему в работоспособном состоянии и своевременно реагировать на потенциальные проблемы.
В этой статье мы рассмотрим, как мониторить ресурсы сервера 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
.
Регулярное использование инструментов для анализа памяти, процессора и диска, а также системных журналов и автоматизации мониторинга позволяет поддерживать сервер в работоспособном состоянии.
Не забывайте о безопасности при удалении файлов и всегда проверяйте, что именно вы удаляете, чтобы не затронуть работоспособность системы.