Nos últimos dias, eu tenho tentado entender a estranheza que está acontecendo em nossa infra-estrutura, mas não consegui entender isso, então estou recorrendo a vocês para me dar algumas dicas.
Tenho notado no Graphite, picos no load_avg que acontecem com regularidade mortal aproximadamente a cada 2 horas - não são exatamente 2 horas, mas são muito regulares. Estou anexando uma captura de tela disso que tirei do Graphite
Eu fiquei preso na investigação disso - a regularidade disso estava me levando a pensar que é algum tipo de trabalho cron ou algo parecido, mas não há cronjobs em execução nesses servidores - na verdade, essas são VMs em execução na nuvem Rackspace. O que estou procurando é algum tipo de indicação que pode estar causando esses problemas e como investigar isso mais a fundo.
Os servidores estão bastante inativos - este é um ambiente de teste, por isso quase não há tráfego entrando / não deve haver carga neles. Essas são as 4 VMs de núcleos virtuais. O que sei com certeza é que estamos coletando um monte de amostras de grafite a cada 10 segundos, mas se essa é a causa da carga, espero que ela seja constantemente alta, em vez de acontecer a cada 2 horas em ondas em servidores diferentes.
Qualquer ajuda para investigar isso seria muito apreciada!
Aqui estão alguns dados do sar para app01 - que é o primeiro pico azul na imagem acima - não consegui tirar conclusões a partir dos dados. Também não é que o pico de gravação de bytes que você vê acontecendo a cada meia hora (NÃO CADA 2 HORAS) se deva ao chef-cliente executando a cada 30 minutos. Tentarei coletar mais dados, mesmo que já tenha feito isso, mas também não consegui tirar conclusões deles.
CARGA
09:55:01 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10:05:01 PM 0 125 1.28 1.26 0.86 0
10:15:01 PM 0 125 0.71 1.08 0.98 0
10:25:01 PM 0 125 4.10 3.59 2.23 0
10:35:01 PM 0 125 0.43 0.94 1.46 3
10:45:01 PM 0 125 0.25 0.45 0.96 0
10:55:01 PM 0 125 0.15 0.27 0.63 0
11:05:01 PM 0 125 0.48 0.33 0.47 0
11:15:01 PM 0 125 0.07 0.28 0.40 0
11:25:01 PM 0 125 0.46 0.32 0.34 0
11:35:01 PM 2 130 0.38 0.47 0.42 0
11:45:01 PM 2 131 0.29 0.40 0.38 0
11:55:01 PM 2 131 0.47 0.53 0.46 0
11:59:01 PM 2 131 0.66 0.70 0.55 0
12:00:01 AM 2 131 0.81 0.74 0.57 0
CPU
09:55:01 PM CPU %user %nice %system %iowait %steal %idle
10:05:01 PM all 5.68 0.00 3.07 0.04 0.11 91.10
10:15:01 PM all 5.01 0.00 1.70 0.01 0.07 93.21
10:25:01 PM all 5.06 0.00 1.74 0.02 0.08 93.11
10:35:01 PM all 5.74 0.00 2.95 0.06 0.13 91.12
10:45:01 PM all 5.05 0.00 1.76 0.02 0.06 93.10
10:55:01 PM all 5.02 0.00 1.73 0.02 0.09 93.13
11:05:01 PM all 5.52 0.00 2.74 0.05 0.08 91.61
11:15:01 PM all 4.98 0.00 1.76 0.01 0.08 93.17
11:25:01 PM all 4.99 0.00 1.75 0.01 0.06 93.19
11:35:01 PM all 5.45 0.00 2.70 0.04 0.05 91.76
11:45:01 PM all 5.00 0.00 1.71 0.01 0.05 93.23
11:55:01 PM all 5.02 0.00 1.72 0.01 0.06 93.19
11:59:01 PM all 5.03 0.00 1.74 0.01 0.06 93.16
12:00:01 AM all 4.91 0.00 1.68 0.01 0.08 93.33
IO
09:55:01 PM tps rtps wtps bread/s bwrtn/s
10:05:01 PM 8.88 0.15 8.72 1.21 422.38
10:15:01 PM 1.49 0.00 1.49 0.00 28.48
10:25:01 PM 1.54 0.00 1.54 0.03 29.61
10:35:01 PM 8.35 0.04 8.31 0.32 411.71
10:45:01 PM 1.58 0.00 1.58 0.00 30.04
10:55:01 PM 1.52 0.00 1.52 0.00 28.36
11:05:01 PM 8.32 0.01 8.31 0.08 410.30
11:15:01 PM 1.54 0.01 1.52 0.43 29.07
11:25:01 PM 1.47 0.00 1.47 0.00 28.39
11:35:01 PM 8.28 0.00 8.28 0.00 410.97
11:45:01 PM 1.49 0.00 1.49 0.00 28.35
11:55:01 PM 1.46 0.00 1.46 0.00 27.93
11:59:01 PM 1.35 0.00 1.35 0.00 26.83
12:00:01 AM 1.60 0.00 1.60 0.00 29.87
REDE:
10:25:01 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
10:35:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
10:35:01 PM eth1 7.07 4.77 5.24 2.42 0.00 0.00 0.00
10:35:01 PM eth0 2.30 1.99 0.24 0.51 0.00 0.00 0.00
10:45:01 PM lo 8.35 8.35 2.18 2.18 0.00 0.00 0.00
10:45:01 PM eth1 3.69 3.45 0.65 2.22 0.00 0.00 0.00
10:45:01 PM eth0 1.50 1.33 0.15 0.36 0.00 0.00 0.00
10:55:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
10:55:01 PM eth1 3.66 3.40 0.64 2.19 0.00 0.00 0.00
10:55:01 PM eth0 0.79 0.87 0.08 0.29 0.00 0.00 0.00
11:05:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
11:05:01 PM eth1 7.29 4.73 5.25 2.41 0.00 0.00 0.00
11:05:01 PM eth0 0.82 0.89 0.09 0.29 0.00 0.00 0.00
11:15:01 PM lo 8.34 8.34 2.18 2.18 0.00 0.00 0.00
11:15:01 PM eth1 3.67 3.30 0.64 2.19 0.00 0.00 0.00
11:15:01 PM eth0 1.27 1.21 0.11 0.34 0.00 0.00 0.00
11:25:01 PM lo 8.32 8.32 2.18 2.18 0.00 0.00 0.00
11:25:01 PM eth1 3.43 3.35 0.63 2.20 0.00 0.00 0.00
11:25:01 PM eth0 1.13 1.09 0.10 0.32 0.00 0.00 0.00
11:35:01 PM lo 8.36 8.36 2.18 2.18 0.00 0.00 0.00
11:35:01 PM eth1 7.16 4.68 5.25 2.40 0.00 0.00 0.00
11:35:01 PM eth0 1.15 1.12 0.11 0.32 0.00 0.00 0.00
11:45:01 PM lo 8.37 8.37 2.18 2.18 0.00 0.00 0.00
11:45:01 PM eth1 3.71 3.51 0.65 2.20 0.00 0.00 0.00
11:45:01 PM eth0 0.75 0.86 0.08 0.29 0.00 0.00 0.00
11:55:01 PM lo 8.30 8.30 2.18 2.18 0.00 0.00 0.00
11:55:01 PM eth1 3.65 3.37 0.64 2.20 0.00 0.00 0.00
11:55:01 PM eth0 0.74 0.84 0.08 0.28 0.00 0.00 0.00
Para pessoas curiosas sobre cronjobs. Aqui está o resumo de todos os cronjobs configurados no servidor (escolhi app01, mas isso também está acontecendo em alguns outros servidores com os mesmos cronjobs configurados)
$ ls -ltr /etc/cron*
-rw-r--r-- 1 root root 722 Apr 2 2012 /etc/crontab
/etc/cron.monthly:
total 0
/etc/cron.hourly:
total 0
/etc/cron.weekly:
total 8
-rwxr-xr-x 1 root root 730 Dec 31 2011 apt-xapian-index
-rwxr-xr-x 1 root root 907 Mar 31 2012 man-db
/etc/cron.daily:
total 68
-rwxr-xr-x 1 root root 2417 Jul 1 2011 popularity-contest
-rwxr-xr-x 1 root root 606 Aug 17 2011 mlocate
-rwxr-xr-x 1 root root 372 Oct 4 2011 logrotate
-rwxr-xr-x 1 root root 469 Dec 16 2011 sysstat
-rwxr-xr-x 1 root root 314 Mar 30 2012 aptitude
-rwxr-xr-x 1 root root 502 Mar 31 2012 bsdmainutils
-rwxr-xr-x 1 root root 1365 Mar 31 2012 man-db
-rwxr-xr-x 1 root root 2947 Apr 2 2012 standard
-rwxr-xr-x 1 root root 249 Apr 9 2012 passwd
-rwxr-xr-x 1 root root 219 Apr 10 2012 apport
-rwxr-xr-x 1 root root 256 Apr 12 2012 dpkg
-rwxr-xr-x 1 root root 214 Apr 20 2012 update-notifier-common
-rwxr-xr-x 1 root root 15399 Apr 20 2012 apt
-rwxr-xr-x 1 root root 1154 Jun 5 2012 ntp
/etc/cron.d:
total 4
-rw-r--r-- 1 root root 395 Jan 6 18:27 sysstat
$ sudo ls -ltr /var/spool/cron/crontabs
total 0
$
Como você pode ver, não há cronjobs HOURLY. Somente diariamente / semanalmente etc.
Reuni várias estatísticas (vmstat, mpstat, iostat) - por mais difícil que esteja tentando, não consigo ver nenhum lead que sugira qualquer componente de VM se comportando mal ... Estou começando a me inclinar para possíveis problemas no hypervisor. Sinta-se livre para dar uma olhada nas estatísticas A essência começa com a saída sar -q em torno do tempo "ofensivo" e então você pode ver vm, mp e iostats ....
Basicamente, ainda é um mistério total para mim ...
Respostas:
Interessante.
Em primeiro lugar, você pode aumentar a frequência do log de sar. Em vez de 10 minutos, tente registrar cada minuto. O cronjob sysstat é configurável.
Em seguida, tente fazer o script dos seguintes comandos.
Reúna esse conjunto de dados a cada iteração quando a média de carga aumenta manualmente ou através do cron. Seria bom ter dados de pelo menos um dia útil completo.
Agora, entendo que os servidores estão ociosos, mas alguns aplicativos ainda devem estar em execução. O que eles são?
É possível executar alguma ferramenta de criação de perfil, como perf ou oprofile.
Algum componente de hardware do servidor está sendo alterado? Mesmo algo tão inócuo quanto uma atualização de firmware ou software.
Ei, uma pergunta. Qual é o planejador que você está executando. Eu acredito que é cfq, qualquer chance que você pode alterá-lo para noop. Coloque
elevator=noop
o parâmetro da linha de comando do kernel e reinicie o sistema e veja se ele o melhora.fonte
Processos superiores do registro
Como a ocorrência é muito regular, configure a tarefa cron para monitorar os principais processos durante esse período
Alterar
20-59
para*
registrará a hora inteira para cada número par de horas. O trabalho de criação será executado uma vez por minuto em ambos os casos.Você pode adicionar o arquivo top.log à rotação do log, para que não ocupe todo o espaço, caso se esqueça de desativá-lo.
Verificar arquivo de log
Pesquisar entradas do arquivo de log em um período de carga alta
Tome a seguinte entrada de carregamento como exemplo
Faz
Isso mostrará todas as entradas de log para
22:2x:xx
. Pode ter que incluir outros diretórios de log.Dom 6 de janeiro 21:00:07 2013: xvda w_await spike
xvda Chart - O pico de w_await está em dom Jan 6 21:00:07 2013
fonte
Uma coisa que eu definitivamente verificaria:
Editar: não o obtive da primeira vez :) Você está executando no Rackspace, portanto, não há controle no hipervisor, mas pode valer a pena perguntar ao rackspace se eles poderiam verificar se esse padrão é comum em outras VMs no mesmo host .
fonte