4 команды для диагностики серверных проблем
Jun 16, 2016 12:43 · 958 words · 5 minute read
Для быстрого анализа производительности сервера и диагностики возникающих проблем можно использовать всего несколько удобных команд. Давайте разберемся!
Команда top
выводит текущие процессы, которые обрабатываются ядром. Данные обновляются каждые пять секунд (по умолчанию), вывод примерно такой:
top - 10:27:44 up 16 days, 1:26, 4 users, load average: 1.21, 1.02, 0.88
Tasks: 213 total, 1 running, 212 sleeping, 0 stopped, 0 zombie
%Cpu(s): 9.5 us, 1.0 sy, 0.0 ni, 88.9 id, 0.2 wa, 0.0 hi, 0.4 si, 0.0 st
KiB Mem: 12334660 total, 10879760 used, 1454900 free, 793424 buffers
KiB Swap: 3880956 total, 219888 used, 3661068 free. 5070564 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1516 mysql 20 0 4616124 2.348g 9068 S 22.6 20.0 4611:20 mysqld
1083 www-data 20 0 547904 180172 31660 S 4.0 1.5 0:09.86 apache2
1140 www-data 20 0 551436 183332 31884 S 2.0 1.5 0:09.19 apache2
4616 www-data 20 0 550660 181832 31256 S 1.7 1.5 0:05.01 apache2
9454 root 20 0 184564 36136 7692 S 1.3 0.3 0:00.10 searchd
12766 www-data 20 0 125344 9060 4996 S 1.3 0.1 8:36.07 nginx
1324 root 20 0 500164 12396 4740 S 1.0 0.1 248:39.45 fail2ban-server
32218 www-data 20 0 726532 196140 42672 S 1.0 1.6 0:24.08 apache2
1084 www-data 20 0 549856 181352 31916 S 0.7 1.5 0:08.77 apache2
1085 www-data 20 0 554616 181784 31920 S 0.7 1.5 0:08.60 apache2
1088 www-data 20 0 547216 181276 33632 S 0.7 1.5 0:09.98 apache2
9473 root 20 0 175764 31384 7188 S 0.7 0.3 0:00.02 searchd
12767 www-data 20 0 125344 9148 4976 S 0.7 0.1 8:03.92 nginx
23003 www-data 20 0 551536 190008 44260 S 0.7 1.5 0:23.79 apache2
23707 www-data 20 0 559788 196408 43556 S 0.7 1.6 0:22.69 apache2
3 root 20 0 0 0 0 S 0.3 0.0 82:19.68 ksoftirqd/0
7 root 20 0 0 0 0 S 0.3 0.0 82:17.58 rcu_sched
13 root 20 0 0 0 0 S 0.3 0.0 15:40.67 ksoftirqd/1
136 root 20 0 0 0 0 S 0.3 0.0 1:00.08 jbd2/sda1-8
576 root 20 0 102924 4796 4476 S 0.3 0.0 19:00.40 vmtoolsd
712 root 20 0 106512 2860 2476 S 0.3 0.0 22:17.03 monit
806 zabbix 20 0 89660 2944 2656 S 0.3 0.0 46:47.72 zabbix_agentd
808 zabbix 20 0 89764 4172 4000 S 0.3 0.0 10:17.92 zabbix_agentd
810 zabbix 20 0 89636 3920 3784 S 0.3 0.0 1:14.27 zabbix_agentd
1082 www-data 20 0 550740 184372 33492 S 0.3 1.5 0:09.84 apache2
1872 www-data 20 0 550280 183596 32744 S 0.3 1.5 0:08.15 apache2
9419 root 20 0 175764 31628 7468 S 0.3 0.3 0:00.02 searchd
9500 root 20 0 175764 29652 5488 S 0.3 0.2 0:00.13 searchd
9515 root 20 0 172980 29220 7088 S 0.3 0.2 0:00.01 searchd
9527 root 20 0 28400 3108 2540 R 0.3 0.0 0:00.04 top
23000 www-data 20 0 559928 194812 41844 S 0.3 1.6 0:21.81 apache2
25163 www-data 20 0 492344 193688 40772 S 0.3 1.6 0:20.45
Выводится базовая информация о памяти, процессоре и процессах на сервере. Процессорное время делится на следующие типы:
us:
— время, затраченное на обработку пользовательских задач;sy:
— время, затраченное на работу системы (ядра);id:
— время простоя (ожидания);wa:
— время, затраченное на ожидание ответа от дисковой подсистемы/сети;hi:
— время, затраченное на обработку прерываний (hardware
);si:
— время, затраченное на обработку прерываний (software
);st:
— время, использованное платформой виртуализации.
Подробнее узнать о команде top
можно нажав кнопку “H”.
С помощью команды vmstat
можно увидеть краткосрочный снимок процессора, памяти, процессов и операций ввода/вывода:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 1 220868 1325216 599956 5195496 0 0 51 111 6 3 10 2 88 0 0
Здесь видно следующие колонки:
r:
— процессы, ожидающие выделения процессорного времени;b:
— процессы, ожидающие ответа диска/сети/пользователя;swpd:
— размер используемого свопа;free:
— размер свободной памяти;buff:
— буферы (страницы памяти, зарезервированные системой для выделения их процессам, когда они затребуют этого);cache:
— кэш (данные, которые недавно были использованы системой/процессами и хранящиеся в памяти на случай если вскоре они снова потребуются);si:
— количество блоков в секунду, которое система считывает из свопа в память;so:
— количество блоков в секунду, которое система перемещает из памяти в своп;bi:
— количество блоков в секунду, считанных с диска;bo:
— количество блоков в секунду, записанных на диск;in:
— прерывания;bo:
— переключения контекста;us
,sy
,id
,wa
,st
: — использование процессора, формат аналогичен формату командыtop
.
С помощью команды iostat
можно получить отчет об использовании процессора, нагрузке на дисковую и сетевую подсистему. Результат запуска команды без дополнительных параметров выглядит следующим образом:
Linux 3.16.0-4-amd64 (example.com) 06/09/2016 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
9.82 0.00 2.31 0.24 0.00 87.63
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 21.68 199.62 252.49 280941560 355350416
sda 2.63 2.40 187.19 3371168 263445152
dm-0 20.74 159.65 207.13 224689725 291513556
dm-1 3.42 4.51 26.25 6350785 36943492
dm-2 6.48 35.45 19.11 49897297 26887944
dm-3 0.00 0.00 0.00 496 0
dm-4 0.00 0.00 0.00 2901 5424
Данной информации может показаться недостаточно, поэтому лучше использовать следующие ключи:
-d
— отображать только использование дисков;-c
— отобразить только использование CPU;-j
— отобразить имя раздела (ID | LABEL | PATH | UUID);-k
— отобразить данные в килобайтах;-m
— отобразить данные в мегабайтах;-p
— отобразить статистику по указанному блочному устройству;-t
— отобразить время выполнения теста;-x
— отобразить расширенную статистику.
Информацию об использовании оперативной памяти и свопа можно увидеть с помощью команды free
:
total used free shared buffers cached
Mem: 12334660 10892940 1441720 419980 609740 5108228
-/+ buffers/cache: 5174972 7159688
Swap: 3880956 220844 3660112
Вывод показывает общее количество свободной и используемой физической памяти, памяти отведенной для свопа и т.д.