4 главных performance команды
Как быстро диагностировать проблему на сервере? Для этого есть несколько удобных команд.
top
Команда показывает текущие задачи которые обслуживаются ядром. По умолчанию, команда top автоматически обновляет эти данные каждые пять секунд:
top - 11:17:51 up 153 days, 4:51, 1 user, load average: 0.01, 0.02, 0.05 Tasks: 64 total, 1 running, 63 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 508944 total, 501244 used, 7700 free, 108552 buffers KiB Swap: 0 total, 0 used, 0 free, 148108 cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 10648 708 576 S 0.0 0.1 4:40.64 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 6:03.05 ksoftirqd/0 5 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u:0 6 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root rt 0 0 0 0 S 0.0 0.0 1:28.15 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 12 root 20 0 0 0 0 S 0.0 0.0 0:30.45 sync_supers 13 root 20 0 0 0 0 S 0.0 0.0 0:00.61 bdi-default 14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 17 root 20 0 0 0 0 S 0.0 0.0 0:18.19 khungtaskd 18 root 20 0 0 0 0 S 0.0 0.0 0:27.31 kswapd0 19 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
Никто не использует и половины фишек, которые доступны в этой команде. Если нажать на кнопку h откроется мануал по команде.
С помощью кнопки k можно выключить любой процесс по его PID.
С помощью кнопки x можно менять колонку, по которой сортируются процессы.
Команда выводит базовую информацию о процессах, процессоре и памяти. Процессорное время распределено по таким типам:
- us: время, проведенное под пользовательские задачи.
- sy: время, потраченное на работу ядра/системы.
- id: время ожидания (процессор ничего не делает).
- wa: время, затраченное на ожидание диска/сети/…
- st: время, “украденное” из виртуальной машины (платформой виртуализации, плохо когда оно большое).
vmstat
Команда vmstat покажет снапшот процессора, IO, процессов, и памяти:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 7108 108932 148556 0 0 1 14 3 2 1 0 98 0
Первые колонки показывают процессы:
- r: процессы, ожидающие процессора
- b: процессы, ожидающие диска/сети/пользователя и т.п.
.
Оба показателя должны стремиться к нулю.
Следующие колонки показывают использование памяти:
- swpd: размер используемого свопа, плохо если значительно больше нуля
- free: свободная память, это должно стремиться к нулю
- buff: всякие буферы (например на I/O операциях)
- cache: кэш операционной системы
Дальше идет инфа о вводе/выводе:
- bi: полученные блоки от устройства (типа диска)
- bo: отправленные блоки на устройство
Дальше идут данные о прерываниях (in) и переключениях контекста (cs), а также данные об использовании процессора (формат такой же, как и у команды top).
Vmstat показывает краткосрочную картинку, однако стоит иметь представление и о долгосрочных трендах (это дальше).
iostat
Сначала нужно установить команду:
apt-get install sysstat
Команда показывает три отчета: использование процессора, утилизацию i/o и сетевой подсистемы. Если запустить команду без параметров, она будет покажет минимум инфы:
Linux 3.2.0-4-amd64 (ruhighload.com) 10/25/2015 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.85 0.00 0.37 0.08 0.71 98.00 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn vda 1.01 0.88 13.92 11683285 184438328
Использование устройств (device) показывает все подключенные диски и информацию о их использовании. Чтение в секунду (kB_read/s) и запись в секунду (kB_wrtn/s) помогут дать представление о нагрузке дисков.
free
Команда показывает статистику памяти и свопа:
**total used** free shared buffers cached Mem: 508944 478368 30576 0 71780 162704 -/+ buffers/cache: 243884 265060 **Swap: 0 0 0**
Количество используемой памяти (used) в хорошем случае должно стремиться ко всей доступной памяти (total), однако swap должен быть минимальным (или нулевым, как у нас).
Самое важное
top, vmstat, iostat и free – 4 команды, которые помогут существенно упростить анализ и настройку производительности серверов.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: