Carregar avg estranheza no Linux Ubuntu

9

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

Load Averag - Clique para ampliar

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 ...

milosgajdos
fonte
Você tem algum dado interativo que pode compartilhar para investigar mais (por exemplo, o que 'top', 'htop' e 'iotop' exibem durante os picos de carga recorrentes)? Além disso, você verificou os logs do seu aplicativo durante os períodos em questão para ver se eles estão exibindo algum comportamento estranho? Além disso, você possui hosts com configurações semelhantes não hospedadas na infraestrutura de nuvem pública? Em caso afirmativo, eles estão exibindo um comportamento semelhante?
Esquireofoz
Em termos de logs de aplicativos - não há nada acontecendo. As únicas entradas de log que ele contém são verificações de monitoramento que estão acontecendo a cada minuto - basicamente, o sistema de monitoramento acessa o site principal e reporta o código de resultado - além dos logs estarem completamente vazios. Além disso, como você pode ver, há uma variedade de hospedeiros acima - isso está acontecendo em todos eles (Redis, servidor de aplicativo, servidor chefe etc.)
milosgajdos
Você já tentou usar o psacct para reduzi-lo?
HTTP500
você assume regularidade, mas os dados que você mostra não mostram picos que acontecem regularmente. por favor, seja mais específico sobre o período exato em que está mostrando regularidade em (durante vários dias, talvez? Na foto, não há regularidade). execute um "top -n 1" a cada 1 minuto ou mais e mantenha-os em um arquivo, e isso pode ajudar a ver quais outros processos estão competindo pela CPU ao mesmo tempo em que ocorre um pico. Se App1 é um aplicativo voltado para a Internet, talvez seja apenas alguém acessando e forçando esse comportamento? adicione um log "netstat -an" regular também (a cada minuto?)
Olivier Dulac
Você viu a imagem em anexo? Se isso não mostra regularitu, não sei o que faz. Agora eu aumentei o período de amostragem para o sar, então estou amostrando a cada 5 minutos. A regularidade na foto é mais do que óbvia - está acontecendo a cada duas horas. Este é um ambiente de armazenamento temporário sem tráfego - como você certamente pode ver nas saídas sar acima para estatísticas da rede.
milosgajdos

Respostas:

3

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.

ps auxf > /tmp/ps.out
vmstat 1 50 > /tmp/vm.out
mpstat -P ALL 1 50 > /tmp/mp.out
iostat -xdk 1 50 > /tmp/io.out
cat /proc/meminfo > /tmp/meminfo.out

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=noopo parâmetro da linha de comando do kernel e reinicie o sistema e veja se ele o melhora.

Soham Chakraborty
fonte
Eu adicionei uma pequena edição sobre o agendador. por favor veja o resultado.
Soham Chakraborty
1

Processos superiores do registro

Como a ocorrência é muito regular, configure a tarefa cron para monitorar os principais processos durante esse período

#app01
20-59 0/2 * * * root /usr/bin/top -b -n 1 | /usr/bin/head -n 15 >> /var/log/top.log

Alterar 20-59para *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

10:25:01 PM         0       125      4.10      3.59      2.23         0

Faz

grep ' 22:2' /var/log/*
grep ' 22:2' /var/log/apache2/*

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 insira a descrição da imagem aqui

John Siu
fonte
0

Uma coisa que eu definitivamente verificaria:

  • gráficos do vSphere para o mesmo padrão, talvez outra VM no mesmo host esteja consumindo as CPUs (portanto, a carga na VM aumenta conforme leva mais tempo para processar a mesma quantidade de dados com um fluxo constante devido ao menor tempo de CPU disponível para sua VM).

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 .

Martino Dino
fonte
1
Também desconfio disso - não seria a primeira vez que a nuvem da Rackspace estaria causando algum tipo de loucura. Eu duvido que eles monitorem qualquer um de seus servidores hypervisor - quero dizer, em termos de VMs que se comportam mal, no entanto, gostaria de descartar qualquer possibilidade "interna" antes de voltar para o último recurso - o suporte da Rackspace.
milosgajdos
O desempenho do hipervisor afetaria a média de carga aparente de uma VM? Isso me leva a pensar em como a média de carga é calculada. Isso poderia ser algum efeito do recurso de economia de energia / verde mudar periodicamente o trabalho para menos núcleos sem o conhecimento do sistema operacional? Ou que tal mudar dinamicamente a taxa de clock com base, por exemplo, em entradas ambientais?
trp
A média de carga é calculada pelo algoritmo de planejamento, em palavras simples, se você tiver 100 tarefas na fila de processamento e o hipervisor for 100% eficiente na execução de 10 tarefas por 1 segundo, serão necessários 10 segundos para executar 100 tarefas, se o hipervisor é apenas 50% eficiente (talvez superprovisionamento da CPU) levará 20 segundos para executar a mesma quantidade de tarefas, levando a um aumento de carga. Explicação completa: blog.scoutapp.com/articles/2009/07/31/…
Martino Dino