Оценка загрузки и производительности VPS
- Команда top на VPS
- Команда memory на VPS с установленной системой Fedora Core 7
- Модуль mod_status веб-сервера Apache
Команда 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-запросы, будет восстановлен.