Alta carga média: Quais processos estão aguardando na fila?

4

Eu tenho um servidor Ubuntu rodando Redis, que sofre com um problema de alta carga.

Forense

Tempo de atividade

# uptime
05:43:53 up 19 min,  1 user,  load average: 2.96, 2.07, 1.52

sar

# sar -q 
05:24:00 AM       LINUX RESTART

05:25:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
05:35:04 AM         0       116      3.41      2.27      1.20         4
Average:            0       116      3.41      2.27      1.20         4

htop

A CPU é a utilização em htop é embaraçosamente baixa:

top

netstat

34abrirredis-serverconexões:

$sudonetstat-natp|grepredis-server|wc-l34

grátis

$ free -g
             total       used       free     shared    buffers     cached
Mem:            14          6          8          0          0          2
-/+ buffers/cache:          4         10
Swap:            0          0          0

Como sei quais processos estão causando alta carga, esperando para entrar no estado Running ? O número de conexões é muito alto?

    
por Adam Matan 06.08.2016 / 07:50

2 respostas

10

Você está vendo o loadavg inesperado devido ao alto iowait. 98,7 na seção wa do topo mostra isso. Nas suas capturas de tela, vejo que o processo do kworker também está em suspensão ininterrupta (estado do D no topo), que ocorre quando um processo está aguardando a conclusão da E / S do disco.

vmstat dá visibilidade à fila de execução. Execute vmstat 1 no típico sar fashion para atualizações a cada segundo.

A coluna r mostra processos executáveis / executáveis que o kernel usa para calcular o loadavg e a coluna b mostra processos bloqueados aguardando interrupção ininterrupta do disco I / O aka. Processos em b são adicionados ao cálculo loadavg, que é como o iowait causa um carregamento misterioso.

Portanto, para responder à sua pergunta sobre como ver quais procs estão causando alta loadavg, no seu caso do iowait, use top / ps para procurar procs em um estado D e solucione os problemas a partir daí.

    
por 06.08.2016 / 17:19
4

O Linux, diferentemente da maioria, se não de todos os sistemas operacionais Unix, não está apenas contando processos usando uma CPU ou esperando por uma CPU na fila de execução como referência para seu cálculo de carga, mas também adiciona o número de processos ) estar em estado ininterrupto, ou seja, aguardando a conclusão de um disco ou rede de E / S. Os últimos estão realmente ociosos, ou seja, não estão usando a CPU.

Provavelmente não há nada para se preocupar com a sua carga (nem tanto). Os processos que você está procurando são, provavelmente, os encadeamentos do kernel transcendentes redis plus.

    
por 06.08.2016 / 16:39