- Хостинг
- Услуги
- Помощь
- Акции
Помощь
Диагностика ресурсов сервера
Если при открытии сайта вы получаете ошибку вида 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/*
И таким же образом двигайтесь дальше, чтобы обнаружить каталог с файлами, которые занимают значительный объём или содержат уже ненужные вам файлы.
Пара советов для упрощения работы с командной строкой:
-
- Используйте стрелки вверх и вниз на клавиатуре для навигации по истории вводимых команд.
- Чтобы быстро написать название каталога используйте клавишу
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-подобной операционной системе:
servicestart/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`