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 команды, которые помогут существенно упростить анализ и настройку производительности серверов.


материалы по теме

  • Запуск процессов в supervisor
  • Темы

    # debian

    Подпишитесь на Хайлоад с помощью Google аккаунта
    или закройте эту хрень