8-800-775-47-72
RU|EN

Помощь

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

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

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

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

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

На всех Linux-серверах мы предоставляем панель ISPmanager. С её помощью можно выполнить простую диагностику из любого браузера, без навыков администрирования. Доступ к панели описан в инструкции — Личный кабинет → Товары → Виртуальные (Выделенные) серверы → выберите сервер → сверху кнопка Инструкция.

Проверяем свободное пространство через 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/*

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

 

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

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

    Вес: 
    0
    Назад к категории