Nós temos um Ubuntu 10.4 VPS servindo um site Rails, que muitas vezes mostra carga muito alta, mas não tem altos números de CPU ou memória. Lendo muitas outras perguntas aqui na falha do servidor sugere para mim que essa é uma questão I / O (ou seja, há processos que estão presos em E / S espera estado e, portanto, aumentando a carga). Estou tentando rastrear esses processos , mas não tendo muita sorte. Eu apreciaria a ajuda com (a) maneiras de identificar os processos culposos e / ou (b) a confirmação de que estou fazendo a pergunta certa.
Aqui está um instantâneo de top
:
top - 18:28:49 up 5 days, 3:07, 2 users, load average: 1.79, 1.83, 1.73
Tasks: 82 total, 1 running, 81 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.1%st
Mem: 1794980k total, 1780384k used, 14596k free, 13356k buffers
Swap: 524284k total, 3116k used, 521168k free, 1012272k cached
Observe a troca baixa, CPUs praticamente ociosas; é por isso que acho que estamos ligados a E / S em vez da memória ou da CPU.
Aqui está iostat
(ofusquei o nome do servidor):
$ iostat -x 1 3
Linux 2.6.35.2-xenU (our.server.com) 03/25/11 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
1.75 0.19 0.50 0.31 0.01 97.24
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
xvdap1 0.01 11.52 2.19 3.18 145.12 117.55 48.97 0.08 15.60 1.67 0.90
xvdap9 0.01 0.01 0.00 0.00 0.10 0.14 62.62 0.00 13.20 6.09 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
xvdap1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
xvdap9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
xvdap1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
xvdap9 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
iotop
não será exibido nesta caixa:
$ iotop
Could not run iotop as some of the requirements are not met:
- Linux >= 2.6.20 with I/O accounting support (CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, CONFIG_TASK_IO_ACCOUNTING): Not found
- Python >= 2.5 or Python 2.4 with the ctypes module: Found
ps
raramente encontra qualquer processo no estado D:
$ sudo ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
976 root D [kjournald]
$ sudo ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
$ sudo ps -eo pid,user,state,cmd | awk '$3 ~ /D/ { print $0 }'
$
Qual é o próximo passo de resolução de problemas?
ETA: corri vmstat
:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 3116 509372 22880 773232 0 0 18 15 24 14 2 0 97 0
Esse valor wa
de 0 me faz pensar se a E / S é realmente o problema.
Além disso, sim, eu sei que carregar no intervalo 1.x não é realmente um problema - mas este aplicativo tem um histórico de aumento de carga até que engasgue, e se eu puder rastrear a fonte enquanto ela ainda tem um baixo febre eu poderia poupar uma fatalidade (para torturar uma metáfora).