как узнать нагрузку на сервер
Простой мониторинг нагрузки на сервер в реальном времени с веб-интерфейсом
Сегодня существует довольно много профессиональных инструментов для мониторинга состояния серверов с обилием настроек, плагинов, поддержкой сразу множества машин и т.д., это известные Nagios, Zabbix, Munin, Cacti и многие другие.
Но в этом посте речь пойдет об очень маленьком и простом, но от этого не менее полезном инструменте: инструменте для мониторинга Scout Realtime. Этот написанный на Ruby open source проект позиционируется разработчиками как современная замена консольной утилите top с выводом статистики использования диска, памяти, сети, CPU и запущенных процессов. Все это отображается в реальном времени с плавными графиками. Во время диагностики работы сервера, иногда полезно пару минут понаблюдать за показателями, и проследить их изменение во времени (в отличие от гирлянды мерцающих чисел в терминале, отображающих данные исключительно на текущий момент).
Поскольку почти все показатели scout_realtime берет из procfs, он работает в большинстве дистрибутивах Linux (не поддерживаются OSX и FreeBSD). Для работы нужна версия Ruby 1.9.3+
По заверениям разработчиков, демон scout_realtime потребляет ресурсов не больше, чем широко известная утилита htop.
Установка и запуск выполняются всего в две команды:
По умолчанию демон запускается на 5555 порту, что можно изменить (см. $ scout_realtime help).
Определяем нагрузку на сервер Apache
Как получить данные о работе web сервера Apache и представить их в удобном для анализа виде.?
Начнём с получения данных.
Для того этого, необходимо подключить модуль mod_status. Он отслеживает работу сервера и показывает данные в виде обычной html страницы. С его помощью можно узнать:
1 количество процессов, выполняющих обработку запросов;
2 количество процессов, которые находятся в состоянии ожидания;
3 состояние каждого процесса, число обработанных им запросов и переданных данных;
4 общее количество запросов и переданных данных;
5 время работы сервера (запуск, перезапуск и общее время работы (uptime));
6 общая статистика: среднее число запросов в сек, байт на запрос, байт в сек;
7 использование CPU каждым процессом отдельно и apache’ем в целом в данный момент;
8 хосты и их запросы, которые обрабатываются в данный момент.
Переходим к настройке
1 Подключаем модуль.
Для этого в файле httpd.conf снимаем комментарий со строки
LoadModule status_module modules/mod_status.so
2 И открываем доступ к статистике. Добавляем в httpd.conf следующие строки
# включаем расширенную статиститку
ExtendedStatus On
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Примечание. Здесь мы разрешили доступ к статистике только для адреса 127.0.0.1 (localhost). Для тестирования удаленного сервера вам нужно будет эту настройку изменить.
3) Перезапускаем apache.
Теперь можно просматривать статистику.
Для этого вводим в браузере URL
localhost/server-status
или, если вы хотите, чтобы страница обновлялась автоматически
(вместо цифры 15 ставите задержку в секундах).
Есть ещё один вариант страницы с этими же данными:
Как видите, данные мы получили, но анализировать их, глядя на стандартную страницу не очень удобно.
Например, на скриншоте показано состояние процессов apache.
Символ подчеркивания означает, что процесс ожидает соединения, буква «W» — отправка ответа, точка – открытый слот без процесса.
Примечание. Скриншот сделан для локального севера, поэтому единственный процесс, который выполняет отправку запроса – это тот, который формирует страницу со статистикой.
Кроме того, если у вас данные постоянно обновляются (используется параметр refresh), то визуально оценить изменения будет очень сложно.
В этом случае удобно использовать скрипт, который будет собирать данные, и показывать их, например, в виде графика.
Можно написать такой его самостоятельно, но проще использовать готовый.
Скрипт состоит из 3-х частей.
1 Конфигурационный файл (inc.config.php). Тут нужно указать адрес страницы со статистикой:
$statusurl = «http://localhost/server-status»;
Время обновления данных и масштаб (используется для построения графика).
$refreshtime = 2;
$scalefaktor = 1;
2 Два скрипта (serverstatus.php и serverstatus2.php). Используются для отображения данных. Запускать можно любой из них. Информация одна и та же, только представлена по-разному.
3) Класс, выполняющий анализ страницы со статистикой (class.parse_server_status.php). Самый интересный компонент ;). Его можно использовать в собственных скриптах.
При работе вам будут нужны 2 метода этого класса.
2 getActiveConnections() – возвращает массив с информацией об активных соединениях. На данный момент этот массив содержит: идентификатор процесса, режим работы, время работы процесса, использование CPU, имя виртуального хоста и URI запроса.
Таким образом, несложно написать собственный скрипт, который будет сохранять данные о работе сервера.
Обзор утилит для анализа производительности на сервере
Как понять, хорошо ли, как быстро и насколько правильно работает сервер? По сути, приведённые далее проверки можно осуществлять на любом сервере, компьютере либо виртуальной машине. Для начала необходимо разобраться с основными терминами, которые будут использованы.
Утилита — компьютерная программа для выполнения специализированных задач, связанных с работой оборудования и операционной системы устройства.
Можно сказать, что это небольшие программы, которые помогают производить анализ каких-либо данных, настройку или другими способами облегчать работу пользователя с системой.
Мы видим утилиты в качестве ярлыков на рабочих столах, файлов скриптов, вызываем их из командной строки или двойным щелчком. Однако внутри содержится программный код, который за нас производит все необходимые действия.
Утилиты могут входить в состав операционных систем, идти в комплекте со специализированным оборудованием или распространяться отдельно (в таком случае их нужно скачать либо установить из репозитория).
Производительность (вычислительная мощность компьютера) — это скорость выполнения определённых операций на компьютере, которую можно представить (измерить) количественной характеристикой (процентами, секундами, флопсами).
Оценка реальной вычислительной мощности производится путём прохождения специальных тестов, предназначенных для проведения некоторых операций и измерения времени их выполнения.
В нашем случае всю работу по тестированию и оценке данных (насколько это возможно) будут производить утилиты. Мы увидим лишь конечный результат. Основная задача: понять, что именно означают выводимые значения.
Для верной интерпретации полученных фактов необходимо также понимать: существует взаимосвязь между различными аппаратными компонентами, в сумме они влияют на производительность сервера (будь то Windows или Linux).
По этой причине мы будет рассматривать отдельно несколько параметров работы системы. В сумме их показатели влияют на общую производительность системы. Измерив всего один показатель, нельзя сказать, что работа происходит плохо, долго или некорректно.
Сейчас большинство серверов работают на основе операционной системы Linux, поэтому мы рассмотрим её более подробно в первую очередь. Вторую популярную в большей степени для домашнего использования систему Windows тоже не обойдём стороной.
Сервер:
★ Linux
Общая схема подбора различных утилит для анализа запущенных процессов
Мониторинг состояния системы с разбиением по процессам
Поиск проблемных мест стоит начать с использования команды top.
Показатели загруженности системы: load average и %CPU, us, id, wa
1. load average
Состоит из трёх чисел и демонстрирует усреднённую загрузку сервера за 1, 5 и 15 минут. Чем ниже значения, тем лучше.
Простое правило: значения не должны быть больше количества процессоров.
2. %CPU
Какие процессы сколько процессорных ресурсов потребляют:
Загрузка пользовательскими процессами. Если ваш сервер постоянно не загружен ресурсоёмкими операциями типа конвертации видео, то этот показатель не должен превышать 10-20%.
Ожидание операций ввода/вывода, чем ниже, тем лучше (иначе процессор слишком долго ждёт ответы от диска или сети).
Команда сообщает об использовании процессорного времени. Мы используем её с флагом -р (что означает, сейчас мы будет указывать PID):
PID необходимого процесса вы можете посмотреть в результатах вывода той же команды top: первый столбец сообщается process id (мы указали PID 611 и 1102).
Таким образом мы узнаём количество выделяемых ресурсов процессам с определённым идентификационным номером в системе.
После необходимо указать время в секундах, в течение которого будет осуществляться проверка (в данном случае это 10 секунд). Вы можете задавать время на своё усмотрение в зависимости от задач, которые предстоит решить.
В завершение указываем число отчётов, которые желаем видеть по итогу.
При помощи флага -d можно получить статистику ввода/ вывода (остальные показатели остались неизменными):
При помощи флага -r можно получить статистику использования оперативной памяти:
Использование оперативной памяти
Для подробного отчёта об использовании всей оперативной памяти на устройстве подойдёт:
Помощь
Вход в личный кабинет
Регистрация клиента
Сообщить об ошибке
Диагностика ресурсов сервера
Если при открытии сайта вы получаете ошибку вида ERR_NAME_NOT_RESOLVED или в тексте ошибки есть слово DNS — причиной могут быть проблемы с доменом. Проведите диагностику по инструкции.
Если же сайт работает медленно, или при его открытии возникают ошибки 502/504, ошибки баз данных, некорректно работают скрипты — скорее всего причина в отказе служб или высокой нагрузке на сервере.
В этой статье мы расскажем, как провести диагностику ресурсов сервера и решить некоторых из возможных проблем.
Диагностика из панели ISPmanager
Проверяем свободное пространство через ISPmanager
На главной странице есть блок с информацией о ресурсах сервера:
Нажмите на Размер диска — откроется вкладка, где указано, сколько сейчас занято дискового пространства.
Если диск полон или почти полон — это может быть причиной недоступности сайта. Нужно понять, что занимает это место и можем ли мы его освободить.
Диск могут переполнить, например, резервные копии. Настройками панели можно установить ограничение по объёму или количеству хранимых копий, подробнее в нашей статье.
Если резервные копии не занимают много места или их нет, то стоит проверить содержимое сервера. Поиск по файлам лучше выполнить в командной строке. Так как файловый менеджер в ISPmanager отображает размер файлов, но не каталогов.
Проверяем нагрузку через ISPmanager
На главной странице панели справа находится график используемых ресурсов.
На графике отмечены 10 значений за последние сутки, которые обновляются раз в 2,5 часа (при высокой нагрузке могут не обновляться). Значения помогут отследить, в какой из промежутков времени был скачок нагрузки.
Например, если на вашем сайте есть ошибка баз данных, а на графике был скачок использования оперативной памяти — стоит проверить, не была ли остановлена служба БД. Это происходит, когда заканчивается свободная оперативная память и для запуска новых служб завершаются старые (вне зависимости от их важности).
Для перезапуска перейдите в раздел Система → Службы
По нажатию слева от графика на число процессов (см. рис 1 «Ресурсы сервера») — откроется список с информацией о том, сколько каждый процесс потребляет ресурсов.
Если вы проверили свободное место и уверены, что его достаточно, а текущая нагрузка невысока — для решения проблемы обратитесь в службу технической поддержки. Опишите, какую проблему и на каком сайте/странице заметили, ваши действия и наблюдения.
Диагностика сервера из консоли
Это инструкция для пользователей, у которых есть опыт работы с командной строкой. Если у вас его нет — обратитесь за помощью к нам, и ваш вопрос рассмотрят технические специалисты.
Бывает так, что ISPmanager недоступен из-за существующей нагрузки или работает медленно. Тогда лучший вариант — подключиться к серверу по SSH и провести диагностику при помощи консольных команд и утилит. Их набор довольно обширен, но для самостоятельного изучения будет достаточно тех, что приведены ниже.
Проверяем свободное пространство через консоль
Зачастую проблемы в недоступности сайта или сервера связаны с банальным переполнением диска.
df — отобразит информацию о занятом на диске месте.
Если на диске не осталось или почти не осталось свободного пространства — нужно выяснить, какие файлы или каталоги занимают много места. В поиске нам поможет du
И таким же образом двигайтесь дальше, чтобы обнаружить каталог с файлами, которые занимают значительный объём или содержат уже ненужные вам файлы.
Пара советов для упрощения работы с командной строкой:
Нашли каталог большого объёма? Замечательно! Давайте посмотрим что в нём. ls — выводит содержимое каталога. Например, ls /usr/local/mgr5 выведет список всего, что есть по указанному пути.
Для удаления файлов используйте rm
Проверяем нагрузку через консоль
Утилита top поможет выявить, связана ли медленная работа сайта с нагрузкой на сервере.
Первое, на что стоит обратить внимание — Load Average — число процессов в очереди на выполнение за последние 1, 5 и 15 минут.
Значения LA должны быть меньше количества ядер вашего сервера. Например, при наличии 2 ядер показатель LA равный или больше 2 свидетельствует о том, что ядра уже загружены на 100%, и процессы вашего сервера не выполняется сразу, а «ждут» когда подойдёт их очередь.
Также стоит обратить внимание на следующие показатели:
Если значение us намного выше id — процессы пользователя создают нагрузку, в списке они обычно занимают верхние позиции.
Если значения wa и st выше допустимых пределов — обратитесь в службу технической поддержки.
Утилита ps является одной из альтернатив top.
Результатом вывода без дополнительных опций будут только процессы текущего пользователя и терминала. Наиболее удобное сочетание параметров:
C помощью утилиты ps вы можете найти все процессы одного пользователя или службы. Для поиска всех нужных вам процессов: или
Останавливаем процесс
Если процесс использует слишком много ресурсов, и вы уверены, что причина в его некорректной работе — можно остановить процесс по идентификатору (известен нам благодаря top или ps).
Также можно завершить процесс по его имени:
Перезапускаем сервисы (службы)
Если необходимая вам служба не работает/работает неправильно — можно попробовать запустить/перезагрузить её. При условии, что вы уверены — это не приведёт к полной недоступности проекта.
Используйте следующую команду для перезапуска сервиса на любой unix-подобной операционной системе:
Проверяем использование оперативной памяти через консоль
Однострачник покажет какие процессы используют память в текущий момент, в Мегабайтах:
Допустимая нагрузка на сервер — что это, как измерить и зачем
Подписаться на
рассылку
Отправляем полезные письма о бизнесе, сайтах и хостинге каждые 2 недели
Рассказываем, что такое нагрузка на сервер, какие причины ее возникновения и как исправить.
На тарифах виртуального хостинга существуют некоторые ограничения — например, допустимая нагрузка на процессор сервера в день. Это вызвано особенностями размещения аккаунтов. На одном мощном сервере расположены разные сайты, которые делят между собой его ресурсы. Чтобы все сайты работали стабильно, существуют лимиты по нагрузке на сервер, базы данных и использование оперативной памяти.
Чтобы было понятнее, проведем простую аналогию. Представьте себе коммунальную квартиру, в которой живут две семьи. В каждой семье по три человека. Утром все собираются на работу или в школу, и всем для этого нужна ванная комната. Если распределить время поровну — например, по 10 минут, то все успеют по своим делам. Но если кто-то из жителей займет комнату на 20 минут, другой — на 30, то остальные жители квартиры не успеют собраться.
Похожая ситуация возникает с ресурсами сервера. Если один из аккаунтов хостинга будет потреблять 90% процессорных ресурсов, то остальным достанется всего 10%. Чтобы не допустить такой ситуации, существуют лимиты допустимой нагрузки. Они помогают распределить ресурсы равномерно.
Использование ресурсов сервера на виртуальном хостинге
Причины и последствия нагрузки на сервер
По нашему опыту рост нагрузки является следствием одной или нескольких причин:
При нарушении лимита нагрузки владельцу аккаунта придет предупреждение. В письмах от Reddock приведены показатели сайта по нагрузке и рекомендации по устранению. Если в течение 5 дней ситуация не исправляется, аккаунт блокируют. Это сделано для того, чтобы гарантировать работу всех сайтов, расположенных на одном сервере. После устранения нагрузки работа сайта возобновляется.
Как узнать текущую нагрузку на сервер и что делать, если сайт превышает лимиты
Посмотреть статистику нагрузки на сервер можно в панели управления виртуальным хостингом (инструкция). Если показатели в норме, то можно не беспокоится и проверить данные позже — например, при выгрузке товаров из 1С.
Если показатели близки к пороговой границе, то это сигнал для тревоги — вскоре придет предупреждающее письмо. Уже на этом этапе нужно предпринимать действия для выявления и устранения высокой нагрузки. Для этого можно воспользоваться встроенными в вашу CMS инструментами диагностики, специальными инструментами-профайлерами или провести анализ лог-файлов.
Не всегда есть возможность снизить нагрузку на сервер. Например, если бизнес развивается, количество посетителей сайта растет, товаров становится больше и синхронизация со сторонними сервисами создает высокую нагрузку. В этом случае оптимальным решением будет переход тариф виртуального сервера.
Размещение сайтов на виртуальном сервере — у каждого свои ресурсы
Виртуальный сервер — отличный вариант для нагруженных корпоративный сайтов и интернет-магазинов, которым не хватает ресурсов виртуального хостинга. На одном мощном сервере размещается несколько сайтов, у каждого из которых свои ресурсы — гарантированная оперативная память, дисковое пространство и допустимая нагрузка на сервер.