Когда сервер подвергается избыточной нагрузке, будь то виртуальный или выделенный, это приводит к замедлению загрузки сайтов и появлению раздражающих ошибок вместо контента. Во избежание подобного исхода событий, необходимо внимательно следить за его параметрами, и проводить своевременный анализ ресурсов.
Далее мы рассмотрим диагностику отдельных ресурсов с использованием инструментов хостинг-провайдера, а также через терминал на стороне сервера. Кроме того, мы разберем различные подходы к решению проблем, связанных с низкой производительностью системы. Инструкция применима к любым серверам с ОС семейства Linux, независимо от предустановленного программного обеспечения.
Проверка ресурсов сервера через VMmanager
Наиболее простым, но в то же время универсальным решением для диагностики ресурсов сервера выступает инструмент виртуализации VMmanager. Он играет ключевую роль в обеспечении эффективного управления выделенными или виртуальными серверами на большинстве современных хостинг-провайдеров. В качестве примера, проверка ресурсов сервера будет производиться на 6 версии инструмента, однако, предыдущие версии также позволяют провести аналогичную диагностику.
Для анализа необходимо перейти в панель управления VMmanager и выбрать нужную виртуальную машину:
Далее пользователь сразу может увидеть, как задействованы ресурсы в текущий момент времени. Для более детальной статистики требуется выбрать «Параметры»:
Во вкладке детальной статистики сверху отображаются общие характеристики сервера и тип виртуализации. На графиках есть возможность посмотреть загруженность сети, нагрузку на процессор, использование оперативной памяти и дискового пространства в текущий момент времени:
Для более детального анализа дискового пространства или статистики ресурсов за определенный период времени, необходимо выбрать соответствующий пункт меню. Информация о виртуальных дисках отображается в таком формате:
Статистика загрузки конкретного ресурса отображается в виде удобного графика:
Имеется возможность вывести график нагрузки в течение дня, недели, месяца, года или выбрать вручную нужные даты. Отображаются все основные ресурсы: процессор, оперативная память, хранилище, сетевой интерфейс.
Многие пользователи ожидают, что ресурсы в течение определенного периода будут задействованы равномерно. Однако, это не всегда бывает так. Например, сетевой интерфейс даже в режиме простоя может иметь похожий вид:
В таком случае не требуется применять какие-либо меры. Однако, в случае с процессором, оперативной памятью или дисковым хранилищем, сервер не должен задействовать все 100% ресурсов на постоянной основе, рекомендуемая нагрузка составляет не более 70%.
Проверка ресурсов сервера в терминале
Анализ общей нагрузки сервера
Ранее мы уже рассматривали некоторые варианты анализа в статье Общая диагностика ресурсов сервера. Там мы поговорили о таких стандартных инструментах, как top/atop, а также рассмотрели установку и настройку утилиты Netdata, которая позволяет отслеживать ресурсы сервера через браузер. В данной статье мы рассмотрим htop как альтернативу утилите top для общего анализа системных ресурсов.
Инструмент не предустановлен в дистрибутивах семейства Linux по умолчанию, поэтому начинаем с установки. Для Debian/Ubuntu используем команду:
apt-get install htop
Для CentOS разумнее воспользоваться репозиториями EPEL. По умолчанию они отключены, поэтому первая команда отвечает за их добавление, а вторая за установку htop:
yum -y install epel-release
yum install htop -y
Сразу после установки можно открыть утилиту из меню приложений или в терминале соответствующей командой:
htop
В результате, пользователю будет доступна вся информация о системе:
В верхнем левом углу отображаются данные о процессоре, включая использование каждого ядра, объем оперативной и swap памяти. Swap-память в Linux используется при нехватке оперативной памяти, обеспечивая стабильность системы. В правом верхнем углу можно наблюдать нагрузку процессора и количество активных задач. Центральная часть показывает активные процессы с возможностью сортировки. В нижней части представлена информация о горячих клавишах и функционале. Раздел "Help" содержит подробное описание возможностей программы:
Перед диагностикой самой системы необходимо точно понимать, какое количество ядер/процессоров используется на сервере. Узнать свое значение пользователь может в верхнем левом углу утилиты htop:
Или выполнив команду:
nproc
В зависимости от полученного значения, будет производиться расчет допустимой общей нагрузки (Load average в правом верхнем углу). В нашем случае оно равняется 2, что значит пределеная нагрузка 2.0. Однако, это не означает, что при нагрузке 2.0 система полностью зависнет. Это число может быть и больше, но в таком случае, все остальные задачи будут стоять в очереди, а сам сервер будет загружен. Идеальным значением считается нагрузка не более 70%. Например, на однопроцессорном сервере среднее Load average должно быть в пределах 0.7. В случае с сервером на примере выше, хорошим показателем будут значения не выше 1.4.
При помощи htop или его аналогов, пользователю необходимо оценить основные ресурсы: средняя загрузка процессора, использование оперативной памяти, дискового пространства и сетевого интерфейса. Если ресурсы минимальны, требуется отсортировать процессы по использованию CPU, выявить операции с высоким потреблением, после чего оптимизировать или завершить их. В случае невозможности закрытия программы или неудачной оптимизации, рекомендуется рассмотреть переход на сервер с более мощной конфигурацией.
Проверка свободной оперативной памяти
В данном разделе мы ближе рассмотрим важный аспект функционирования любого сервера – достаточный уровень свободной оперативной памяти.
Самый простой способ проверить свободную оперативную память на любой системе семейства Linux через терминал – это команда:
free -m
На выходе получаем уже в мегабайтах следующие данные: общий, используемый, свободный и кэшированный объем оперативной памяти, а также объем подкачки (swap):
Инструмент полезен для получения общих данных в конкретный момент времени. Для динамической диагностики использования оперативной памяти, рекомендуется утилита vmstat, которая позволяет настраивать частоту обновления выходной информации:
vmstat 1
В указанном примере обновление данных будет происходить каждую секунду. Вывод производится в формате, аналогичном free:
Инструмент предоставляет также общую информацию по системе, но в нашем случае важны только колонки, которые отвечают за оперативную память, то есть memory и swap. Все значения указаны в килобайтах. Разберем их детальнее:
Memory (Оперативная память):
- swpd: виртуальная память, обменянная на физическую.
- free: свободная физическая память (RAM).
- buff: память, используемая как буфер перед записью на диск.
- cache: память, используемая как кэш для ускорения доступа.
Swap (Swap-память):
- si: данные, считанные из swap-памяти в физическую память.
- so: данные, записанные из физической памяти в swap-память.
Отдельно стоит упомянуть тот факт, что все утилиты по диагностике ресурсов системы изначально берут данные из журналов. В случае с оперативной памятью, пользователь сможет посмотреть данные напрямую, открыв соответствующий файл:
cat /proc/meminfo
Вывод довольно обширный, но для анализа памяти достаточно обратить внимание на первые записи:
Проблемы с избыточным использованием оперативной памяти чаще всего связаны с определенной задачей или процессом. Для начала будет достаточно диагностики общими инструментами с целью выявления проблемных процессов. В качестве решения можно рассмотреть оптимизацию конкретного приложения, включение кэширования и сжатия данных, если речь идет о больших объемах информации, либо же увеличение конфигурации сервера.
Контроль дискового пространства
Диагностика дискового пространства сервера не менее важна, чем остальные его ресурсы. Как правило, сигналами о необходимости проверки служат: невозможность создания или записи в уже существующие файлы, замедленная производительность системы и различные ошибки ввода-вывода.
Наиболее удобный способ проверки – это команда:
df -h
В ответ инструмент покажет информацию по всем смонтированным разделам диска:
Для более детального мониторинга директорий, можно воспользоваться командой:
du -hs /*
Таким образом, пользователь сможет узнать, сколько места занимает каждый каталог. Для восстановления производительности системы, потребуется оптимизировать тот раздел диска, который потребляет наибольшее количество памяти. Рекомендуется не допускать использования более 80-90% свободного пространства от общего объема, оставшихся 10-20% должно быть достаточно для стабильной работы системы. В случае невозможности оптимизации, рекомендуется увеличить дисковое пространство. Это можно сделать путем добавления новых или расширения существующих дисков, а также использования облачного хранилища. Независимо от выбранного решения, рекомендуется всегда делать резервную копию во избежание потери файлов.
Мониторинг сетевого интерфейса
Заключительный, но не менее важный аспект диагностики сервера – это проверка сетевого интерфейса. Для общей информации о том, сколько трафика приходится на сетевые процессы в режиме реального времени можно воспользоваться утилитой nethogs.
Установка и запуск на Cent OS:
yum install nethogs
nethogs
Для Debian/Ubuntu:
apt-get install nethogs
nethogs
Инструмент покажет те процессы, которые задействуют сетевые ресурсы в данный момент:
Для более детального анализа рекомендуем воспользоваться iftop.
Установка и запуск на Cent OS:
yum install iftop
iftop
Для Debian/Ubuntu:
apt-get install iftop
iftop
Вывод программы представляет собой список активных соединений с указанием IP-адресов, портов, объема переданных данных и скорости передачи. Главное преимущество программы – это визуальное оформление загрузки сетевого канала:
После диагностики сетевого канала на сервере и выявления проблем с высокой нагрузкой, рекомендуется увеличить пропускную способность сетевых соединений на стороне хостинг-провайдера или оптимизировать настройки конкретного проблемного интерфейса. В качестве вспомогательного инструмента, можно использовать различные системы мониторинга для оперативного отслеживания изменений в сетевой активности и, в случае необходимости, регулярно обновлять сетевую инфраструктуру в соответствии с требованиями.
Заключение
В заключение можно подчеркнуть, что проверка ресурсов сервера является неотъемлемой частью эффективного управления виртуальными и выделенными серверами. В статье мы рассмотрели основные инструменты для полноценного анализа сервера, а также дали практические рекомендации по устранению возможных проблем. Регулярная диагностика системы позволяет серверу беспроблемно функционировать, даже без активного участия пользователя.