Диагностика ресурсов сервера | ISPserver Перейти к основному содержанию

Помощь

Диагностика ресурсов сервера

Если при открытии сайта вы получаете ошибку вида ERR_NAME_NOT_RESOLVED или в тексте ошибки есть слово DNS — причиной могут быть проблемы с доменом. Проведите диагностику по инструкции.

Если же сайт работает медленно, или при его открытии возникают ошибки 502/504, ошибки баз данных, некорректно работают скрипты — скорее всего причина в отказе служб или высокой нагрузке на сервере.

В этой статье мы расскажем, как провести диагностику ресурсов сервера и решить некоторых из возможных проблем.

Диагностика из панели ISPmanager

На всех Linux-серверах мы предоставляем панель ISPmanager. С её помощью можно выполнить простую диагностику из любого браузера, без навыков администрирования. Доступ к панели можно получить, используя данные, отправленные на ваш email после активации сервера.

Проверяем свободное пространство через ISPmanager

На главной странице есть блок с информацией о ресурсах сервера:

Нажмите на Размер диска — откроется вкладка, где указано, сколько сейчас занято дискового пространства.

Если диск полон или почти полон — это может быть причиной недоступности сайта. Нужно понять, что занимает это место и можем ли мы его освободить.

Диск могут переполнить, например, резервные копии. Настройками панели можно установить ограничение по объёму или количеству хранимых копий, подробнее в нашей статье.

Если резервные копии не занимают много места или их нет, то стоит проверить содержимое сервера. Поиск по файлам лучше выполнить в командной строке. Так как файловый менеджер в ISPmanager отображает размер файлов, но не каталогов.

Подробнее про диагностику места из консоли можно почитать в соответствующем разделе. ISPmanager имеет встроенную консоль в разделе Администрирование → Shell-клиент, для поиска можете воспользоваться ей.

Проверяем нагрузку через ISPmanager

На главной странице панели справа находится график используемых ресурсов.

На графике отмечены 10 значений за последние сутки, которые обновляются раз в 2,5 часа (при высокой нагрузке могут не обновляться). Значения помогут отследить, в какой из промежутков времени был скачок нагрузки.

Например, если на вашем сайте есть ошибка баз данных, а на графике был скачок использования оперативной памяти — стоит проверить, не была ли остановлена служба БД. Это происходит, когда заканчивается свободная оперативная память и для запуска новых служб завершаются старые (вне зависимости от их важности).

Для перезапуска перейдите в раздел Мониторинг и журналы → Службы

Справа от имени службы индикатор состояния — лампочка. Например, если на сайте ошибка «DB query error» или «Не удалось подключиться к базе данных», то, скорее всего, остановлена служба, отвечающая за работу этих баз данных. На скриншоте это mariadb, у вас может быть mysqld (mysql). Нажмите на службы→ Рестарт После этого проверьте ваш сайт, обновите страницу.

Иногда нажатие не приводит к перезагрузке службы — больше информации о проблеме можно получить, перезапустив службу вручную из консоли. В панели ISPmanager есть SSH-клиент в разделе Администрирование, воспользуйтесь им.

По нажатию справа от графика на число процессов (см. рис 1 «Информация о системе») — откроется список с информацией о том, сколько каждый процесс потребляет ресурсов.

Если вы проверили свободное место и уверены, что его достаточно, а текущая нагрузка невысока — для решения проблемы обратитесь в службу технической поддержки. Опишите, какую проблему и на каком сайте/странице заметили, ваши действия и наблюдения.

Диагностика сервера из консоли

Это инструкция для пользователей, у которых есть опыт работы с командной строкой. Если у вас его нет — обратитесь за помощью к нам, и ваш вопрос рассмотрят технические специалисты.

Бывает так, что ISPmanager недоступен из-за существующей нагрузки или работает медленно. Тогда лучший вариант — подключиться к серверу по SSH и провести диагностику при помощи консольных команд и утилит. Их набор довольно обширен, но для самостоятельного изучения будет достаточно тех, что приведены ниже.

Проверяем свободное пространство через консоль

Зачастую проблемы в недоступности сайта или сервера связаны с банальным переполнением диска.

df — отобразит информацию о занятом на диске месте.

Для более удобного отображения используйте ключ -h, так как сама по себе команда отобразит размер без единиц измерения (Kилобайт, Mегабайт, Гигабайт). Ключ h означает human readable — удобный для прочтения человеком.

 

df -h

 

 

Если на диске не осталось или почти не осталось свободного пространства — нужно выяснить, какие файлы или каталоги занимают много места. В поиске нам поможет du

du -hs /* отобразит информацию обо всех директориях:

 

Теперь вы видите, сколько места на диске занимает каждый каталог в корне сервера. Чтобы найти сами файлы, которые заполнили ваш диск, нужно ввести du -hs /имя_каталога/*
Например, du -hs /var/*

И таким же образом двигайтесь дальше, чтобы обнаружить каталог с файлами, которые занимают значительный объём или содержат уже ненужные вам файлы.

 

Пара советов для упрощения работы с командной строкой:

    1. Используйте стрелки вверх и вниз на клавиатуре для навигации по истории вводимых команд.
    1. Чтобы быстро написать название каталога используйте клавишу Tab.
      Например, наберите du -hs /va и нажмите Tab — в строке появится du -hs /var/
      Это не сработает, если есть несколько каталогов/файлов с одинаковыми наименованиями в начале. Например, du -hs /var/lo и нажатие Tab не сработало — нажмите второй раз, и отобразится список каталогов. Всё равно не сработало — была допущена ошибка или такого файла/каталога нет.
    1. Двойное нажатие Tab во время ввода поможет, когда не уверены, правильно ли пишете название каталога, и если не знаете точно, какой каталог следующий.

 

Если вы и без поиска знаете, какой каталог всегда заполняется, используйте:
du -h /путь/до/каталога/ — команда выведет информацию об объёме всех каталогов по указанному пути, включая вложенные.

Нашли каталог большого объёма? Замечательно! Давайте посмотрим что в нём.
ls — выводит содержимое каталога. Например, ls /usr/local/mgr5 выведет список всего, что есть по указанному пути.

Чтобы привести список файлов в более читаемый вид, используем опцию -lha

ls -lha /usr/local/mgr5

 

 

В списке есть уже неактуальный каталог или файл вашего сайта — давайте удалим его: Перейдите в нужный нам каталог — cd /путь/до/каталога, путь нам известен по командам выше.

Для удаления файлов используйте rm

rm /путь/до/файла

 

Чтобы случайно не удалить нужный файл, лучше перестраховаться и запросить подтверждение. Для этого используйте ключ -i

rm -i /путь/до/файла

 

 

Хотите удалить файл — введите y или Y и нажмите Enter. Если ошиблись — сочетание клавиш Ctrl + C, и файл останется на месте.

 

 

Для удаления каталога используем ключ -R

rm -Ri /путь/до/каталога

 

 

Внимание! Используйте команду rm -Ri /* аккуратно. Существует возможность удалить все файлы на сервере.
Ещё более опасный вариант этой команды — m -Rf /*ключ f удаляет файлы без подтверждения, символ * указывает, что нужно применить действие на все файлы и каталоги.

Проверяем нагрузку через консоль

Утилита top поможет выявить, связана ли медленная работа сайта с нагрузкой на сервере.

 

Первое, на что стоит обратить внимание — Load Average — число процессов в очереди на выполнение за последние 1, 5 и 15 минут.

Значения LA должны быть меньше количества ядер вашего сервера. Например, при наличии 2 ядер показатель LA равный или больше 2 свидетельствует о том, что ядра уже загружены на 100%, и процессы вашего сервера не выполняется сразу, а «ждут» когда подойдёт их очередь.

Также стоит обратить внимание на следующие показатели:

  • us — время процессора, затраченное на выполнение пользовательских процессов.
  • id — время бездействия процессора.

Если значение us намного выше id — процессы пользователя создают нагрузку, в списке они обычно занимают верхние позиции.

  • По имени пользователя (столбец USER) можно понять, какой из пользователей запустил процесс.
  • В COMMAND отображается информация о команде (процессе), запустившей процесс.
  • %CPU — время ЦП, затраченное для выполнения процесса (в процентах).
  • PID — идентификационный номер процесса. Может пригодиться для его завершения, если вы уверены, что процесс не должен работать или работает некорректно и нужно его перезапустить.
  • wa — время простоя процессора (в процентах), когда он ожидал завершения операций ввода-вывода. Чтобы процесс мог считать нужные ему данные — которых нет в кеше процессора или оперативной памяти — он обращается за ними к диску. Ждёт, пока данные с диска загружаются в оперативную память. И только после этого может начать работать с ними. Если значение wa выше 10-15% — есть проблемы с работой дисковой системы. Возможная причина — высокая нагрузка от базы данных (самих процессов mysql на сервере может быть немного) Они часто обращаются к диску и могут создать «очередь», которая замедляет его работу.
  • st (Steal Time) — процессорное время, забранное у виртуальной машины гипервизором для решения других задач. В случае с услугой хостинга виртуальных серверов это работа других контейнеров, расположенных на этом же физическом родительском оборудовании. По факту этот параметр отображает оверселлинг на ноде. Значение ниже 5-10% не повлияют на производительность именно вашего сервера.

Если значения wa и st выше допустимых пределов — обратитесь в службу технической поддержки.

 

Утилита ps является одной из альтернатив top.

Результатом вывода без дополнительных опций будут только процессы текущего пользователя и терминала. Наиболее удобное сочетание параметров:

ps auxwwf

 

 

C помощью утилиты ps вы можете найти все процессы одного пользователя или службы. Для поиска всех нужных вам процессов:

ps aux | grep <имя процесса>


или

 

ps aux | grep <имя пользователя>

 

 

Останавливаем процесс

Если процесс использует слишком много ресурсов, и вы уверены, что причина в его некорректной работе — можно остановить процесс по идентификатору (известен нам благодаря top или ps).

kill PID

 

Также можно завершить процесс по его имени:

killall processname

 

Не остановился? Тогда остановите процесс принудительно:

kill -9 PID

 

killall -9 processname


Опция -9 отправляет сигнал процессу о принудительной остановке, не дожидаясь его корректного завершения (подробнее о сигналах можно прочитать в Википедии).

 

 

Перезапускаем сервисы (службы)

Если необходимая вам служба не работает/работает неправильно — можно попробовать запустить/перезагрузить её. При условии, что вы уверены — это не приведёт к полной недоступности проекта.

Используйте следующую команду для перезапуска сервиса на любой unix-подобной операционной системе:

service  start/restart/stop/status

где — имя сервиса.

Проверяем использование оперативной памяти через консоль

free -mh отобразит значение в Мегабайтах.

 

  • total — общий объём оперативной памяти (ОЗУ)
  • used — сколько сейчас используется
  • free — свободная память
  • buff/cache — закешированная ОЗУ

Более подробную информацию можно получить командой cat /proc/meminfo

 

 

Однострачник покажет какие процессы используют память в текущий момент, в Мегабайтах:

ps axo rss,comm,pid \
| awk '{ proc_list[$2]++; proc_list[$2 "," 1] += $1; } \
END { for (proc in proc_list) { printf("%d\t%s\n", \
proc_list[proc "," 1],proc); }}' | sort -n | tail -n 10 | sort -rn \
| awk '{$1/=1024;printf "%.0fMB\t",$1}{print $2}'p`

 

 

 

 

Назад к категории