Следим за нагрузкой на сервере. Утилита top.

29.12.2011

Здравствуйте.

Как Вы знаете, лучшее лечение — это профилактика. Наверное, очень многие, если не все, владельцы серверов сталкивались с ситуациями, когда сервер недоступен по причине избыточной нагрузки. А ведь такой ситуации могли и не быть, если бы администратор сервера своевременно узнал о проблеме. У многих владельцев виртуальных (VPS) или физических (dedicated) серверов возникает вполне резонный вопрос: «Как следить за нагрузкой на сервере?». Мы постараемся в нескольких статьях описать наиболее популярные способы и приемы, дадим практические советы по организации мониторинга сервера.

В данной статье мы опишем наиболее распространенные способы выявить причину нагрузки в режиме реального времени с помощью подручных средств и небольших консольных утилит. Сразу стоит отметить, что все операции нами будут выполняться с помощью командной строки сервера. Владельцы Linux и MacOS могут использовать для этого стандартные терминалы. Владельцам Windows мы бы рекомендовали использовать утилиту Putty. Подробная иструкция по использованию Putty Вы так же можете найти на нашем блоге: Работа с Putty. И так, предположим, что мы подключились к серверу с правами суперадминистратора (root). Что же делать дальше:

Мониторинг нагрузки на процессор, диски и использования оперативной памяти

Первая утилита, о которой мы расскажем — это стандартная команда top, которая отобразит список процессов на сервере и расход ресурсов каждым из процессов. Результат выполнения команды будет выглядеть примерно следующим образом:

Давайте подробно рассмотрим всю информацию, которую предоставляет нам top. И так, вверху мы видим текущее время на сервере, uptime (время работы) операционной системы без выключений и перезагрузок, количество пользователей, которые авторизованы на сервере, и среднюю нагрузку на сервере в данный момент, за последние 5 и 15 минут.
Следующая строка нам сообщает количество процессов и их состояние. Tasks — это суммарное количество запущенных процессов в системе. running — это количество выполняющихся в данный момент процессов, sleeping — количество «спящих процессов» (процессы находятся в состоянии ожидания или готовности), zombie — количество «зомби» процессов (это процессы, которые уже завершились, но их идентификатор все еще отображается в списке процессов).

Далее мы видим использование ресурсов процессора. us% — это процент времени, потраченного на выполнение процессов пользователей, для которых не задан приоритет. sy% — это процент времени, потраченного на выполнение процессов ядра. ni% — процент времени, потраченного на выполнение процессов с заданных приоритетом. wa% — это процент времени, потраченного на выполнение операций I\O (ввода\вывода), то есть дисковых операций. hi% — это процент времени, потраченный на обработку аппаратных прерываний. si% — процент времени, потраченного на обработку программных прерываний. st% — процент времени, «украденного» у виртуальной машины гипервизором для каких-либо других задач, к примеру, запуска другой виртуальной машины.

Далее размещается информация о использовании оперативной памяти. total — это суммарный объем оперативной памяти сервера, used — это объем использованной памяти, free — объем свободной памяти, buffers — объем буфера, cached — объем кеша операций ввода\вывода. Swap — аналогия файла подкачки в Windows. Если на сервере заканчивается свободная оперативная память, вместо нее начинает использоваться специальная область на жестком диске, swap-раздел. Аналогично с оперативной памятью, total — суммарный объем swap,used — объе использованного swap.

Здесь стоит отметить одну особенность Linux. Операционная система считает, что память, использованная под кеш дисковых операций, занята. На самом деле это не совсем так. При стандартных настройках ядра, если системе не хватает оперативной памяти для выполнения процессов, демон pdflush начинает сбрасывать кеш на жесткий диск, освобождая таким образом оперативную память для других приложений. Процент свободной оперативной памяти, при котором начинается сброс кеша на диск, задается параметром ядра vm.dirty_background_ratio и по умолчанию имеет значение 10.

Ниже мы видим список процессов и информацию о самих процессах. PID — это числовой идентификатор процесса, USER — это пользователь, который инициировал запуск процесса, PR — динамический приоритет процесса, NI — статический приоритет процесса, VIRT — объем использования виртуальной памяти (включая весь код, библиотеки и т.д.), RES — объем использования реальной оперативной памяти, SHR — объем использованной shared-памяти (эта память может использоваться и другими приложениями), S — статус процесса (выполняется, ожидает, остановлен и т.д.), %CPU — процент использования процессорного времени, %MEM — процент использования реальной оперативной памяти, TIME — время работы процесса с момента запуска, COMMAND — имя процесса.

Это основные сведения, которые предоставляет команда top. Существует еще множество параметров данной утилиты, всевозможные сортировки, способы отображения данных и т.д. Наша цель — ознакомить Вас с базовыми возможностями утилиты. Более детальную информацию Вы можете узнать из справочных материалов, выполнив команду

man top

Успешной работы!

Продолжение следует…

Опубликовано в Статьи | Нет комментариев »

Нет комментариев »

Нет комментариев

Оставить комментарий