Помощь

Оценка загрузки и производительности VPS

Команда top на VPS

Команда top необходима для отображения информации в реальном времени о процессах в Unix-системах, доступной памяти, использовании ресурсов CPU. Верхняя часть вывода содержит 4 основных строки:

Tasks: 35 total, 1 running, 34 sleeping, 0 stopped, 0 zombie
Cpu(s): 10.1% us, 12.2% sy, 0.0% ni, 72.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 6216764k total, 5668368k used, 548396k free, 472176k buffers
Swap: 12586916k total, 1352k used, 12585564k free, 3360180k cached

Первая строка содержит информацию по задачам (процессам) на сервере, показывает, сколько всего запущено задач на (35 total), сколько из задач выполняется (1 running), сколько из задач находится в режиме sleep (так называемый «ждущий режим» - 34 sleeping), сколько процессов останавливается (0 stopped), количество zombie-процессов (0 zombie).

Вторая строка показывает использование CPU для сервера. Первый параметр (10.1% us - user) содержит информацию о том, сколько процессорного времени потребляется программами и приложениями, запущенными на сервере.

Последние две строки показывают состояние памяти - реальной (Mem) и файла подкачки (Swap). Данные показывают общее состояние памяти всего сервера (а не только отдельного VPS в частности). total (6216764k total) - количество памяти, установленной на сервере (занятой под файл подкачки). used (5668368k used) - количество памяти, используемой в настоящий момент, free (548396k free) - свободная память сервера. buffers - часть памяти, используемая под буферы, cache - часть памяти, используемая в качестве кеша (повторяющиеся образы программ в памяти. Память буфера (buff) и кэш-память показывает, насколько используется память буфера диска и кэша, обрабатывая только последние данные.

Команда memory на VPS с установленной системой Fedora Core 7

Для того, чтобы отследить занимаемую оперативную память и использование процессора (CPU) для VPS-сервера, а не всего физического сервера, на VPS с установленной операционной системой Fedora Core 7 необходимо использовать команду memory.

Данная команда при запуске выдает данные в следующем виде (показатели на разных тарифных планах будут различаться соответственно):

VPS CPU
user: 0.00 nice: 0.00 system: 0.00 idle: 100.00

VPS Memory
total: 256.00MB used: 105.29MB (41.13%) free: 150.71MB (58.87%)

Это и есть показатели использования мощности процессора и оперативной памяти в пределах VPS-сервера.

Модуль mod_status веб-сервера Apache

Модуль Apache mod_status позволяет администратору следить за состоянием веб-сервера в реальном времени. При обработке скриптов модулями mod_php или mod_perl невозможно получить подробную информацию по использованию ими системных ресурсов стандартными командами top и ps. Модуль mod_status генерирует специальную страницу со статистикой обработки текущих запросов веб-сервером в читаемом виде.

Для включения страницы со статистикой нужно отредактировать файл httpd.conf:

[root@vXXXX ]# vi /etc/httpd/conf/httpd.conf

Убедитесь, что указанный модуль загружается:

LoadModule status_module modules/mod_status.so

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

ExtendedStatus On

Раскомментируйте следующую секцию и укажите ваш внешний IP адрес. Если вы его не знаете, то вы можете его узнать с помощью различных сервисов наподобие myip.ru. В том случае если у вас динамический IP адрес, можно указать «Allow from all» для доступа к статистике с любого IP адреса:

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from xxx.xxx.xxx.xxx
</Location>

Перезагрузите веб-сервер командой:

[root@vXXXX ]# service httpd restart
Теперь вы можете обращаться к странице со статистикой по адресу http://domain.tld/server-status, где domain.tld — ваш домен.

Информация о работе веб-сервера выглядит следующим образом:

Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process

PID    M  CPU   SS Client  Request
21678  W  0.02  0  IP      GET /server-status HTTP/1.1
21745  C  0.01  0  IP      GET /img/glyph/btn_miva_bg.gif HTTP/1.1
21998  C  0.00  0  IP      GET /img/common/pb_plesk.gif HTTP/1.1
21999  C  0.00  0  IP      GET /img/common/pb_virt.gif HTTP/1.1

Srv    Child Server number - generation
PID    OS process ID
Acc    Number of accesses this connection / this child / this slot
M      Mode of operation
CPU    CPU usage, number of seconds
SS     Seconds since beginning of most recent request
Req    Milliseconds required to process most recent request
Conn   Kilobytes transferred this connection
Child  Megabytes transferred this child
Slot   Total megabytes transferred this slot

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

  • M — текущее состояние процесса, расшифровка значений приводится чуть выше
  • CPU — значение использования процессора в процентах (формулировка «number of seconds» некорректна)
  • SS — время работы процесса в секундах
  • Client — IP адрес, с которого пришёл запрос
  • Request — обрабатываемый запрос

Примеры возможных ситуаций, при которых может не отображаться сайт:

  • Несколько одинаковых или почти одинаковых запросов к одному скрипту загружают почти весь CPU.

    Скорее всего, скрипт написан некорректно. В этом случае достаточно отключить скрипт или определённую секцию сайта командой chmod, после чего сообщить программистам, занимающимся разработкой сайта.

  • Несколько запросов отрабатываются по несколько десятков секунд, при этом ресурсы CPU почти не потребляются.

    Не исключено, что скрипты ожидают ответа от базы данных. В этом случае имеет смысл посмотреть, какие запросы выполняются в этот момент в базе данных.

  • Множество запросов с одного или нескольких IP, запросы визуально схожи.

    Возможно, это флуд. Можно попробовать заблокировать эти IP или сразу соответствующие подсети при помощи механизма .htaccess и посмотреть, изменится ли ситуация.

  • Множество запросов с множества разных IP, запросы визуально схожи, один тип запросов (например, POST).

    Возможно, это POST-флуд. Можно попробовать отключить POST-запросы при помощи механизма .htaccess «Limit POST» и посмотреть, изменится ли ситуация. В этом случае может потерять работоспособность какая-либо часть сайта, но по крайней мере, доступ к части сайта, не использующей POST-запросы, будет восстановлен.