Cargas extremamente altas, apesar do cache

1

Ok, eu tenho um bom servidor dedicado rodando o CentOs 6 com 16GB de memória RAM, processadores dual xenon, etc. Entretanto, eu tenho experimentado altas cargas devido ao mysql. Aleatoriamente, a carga será inferior a 1,0 e o tempo de geração da página será < 30ms, e o site está sendo pré-formado suavemente. Isso é com cerca de 100 usuários simultâneos, atendendo a menos de 200 páginas / minuto. No entanto 99% do tempo é muito lento e tem altas cargas malucas geralmente pelo menos 4 vezes nos 100s. Nós não utilizamos esse problema, este servidor costumava ser capaz de lidar com 400 usuários simultâneos e 1000 páginas / minuto sem ter as cargas acima de 1.5.

A primeira coisa que fiz foi implementar o cache do db em PHP com o ADOdb . Isso ajudou um pouco, mas não resolveu o problema.

Eu procurei por toda a internet e não consigo descobrir o que está errado. Eu pedi a um amigo para dar uma olhada e ele não tinha ideia. Eu fiz o meu host nos mudar para uma nova máquina, mesmo problema depois de algumas horas. Nós não deveríamos estar recebendo uma carga tão alta para o tráfego que estamos recebendo.

Estou começando a pensar que talvez tenha algo a ver com / tmp. Consegui baixar a carga para o normal por um tempo depois de executar 'tmpwatch --mtime --all 1 / tmp'. No entanto, isso não funcionou novamente depois que as cargas aumentaram.

Se alguém tiver alguma ideia do que está errado, eu agradeceria muito. Não tenho certeza do que você pode usar como métricas, mas incluí algumas que podem ajudar.

saída 'top':

top - 22:02:36 up 1 day, 23:39,  1 user,  load average: 4.01, 4.38, 4.50
Tasks: 233 total,   1 running, 231 sleeping,   0 stopped,   1 zombie
Cpu(s): 25.5%us,  2.0%sy,  0.0%ni, 70.5%id,  2.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16331836k total, 16034868k used,   296968k free,   375472k buffers
Swap: 18546680k total,        0k used, 18546680k free, 14421512k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
31149 mysql     20   0 1589m  32m 6024 S 191.0  0.2   5:54.80 mysqld                                                        
27575 apache    20   0  312m  13m 3464 S  2.7  0.1   0:04.06 httpd                                                          
29427 apache    20   0  317m  18m 3484 S  2.7  0.1   0:02.76 httpd                                                          
25331 apache    20   0  311m  12m 3440 S  2.3  0.1   0:05.55 httpd                                                          
21331 apache    20   0  408m  15m 3676 S  2.0  0.1   0:08.57 httpd                                                          
24226 apache    20   0  314m  14m 3484 S  2.0  0.1   0:06.45 httpd                                                          
32352 apache    20   0  311m  12m 3424 S  2.0  0.1   0:01.01 httpd                                                          
32377 apache    20   0  312m  13m 3484 S  2.0  0.1   0:00.86 httpd                                                          
  774 apache    20   0  312m  12m 3108 S  1.7  0.1   0:00.11 httpd                                                          
28165 apache    20   0  406m  12m 3588 S  1.7  0.1   0:03.76 httpd                                                          
30516 apache    20   0  311m  12m 3476 S  1.7  0.1   0:02.04 httpd                                                          
31019 apache    20   0  313m  13m 3436 S  1.7  0.1   0:01.68 httpd                                                          
31020 apache    20   0  314m  15m 3484 S  1.7  0.1   0:01.71 httpd                                                          
  657 apache    20   0  311m  12m 3108 S  1.3  0.1   0:00.20 httpd                                                          
27731 apache    20   0  406m  12m 3572 S  1.3  0.1   0:03.69 httpd                                                          
28180 apache    20   0  313m  13m 3480 S  1.3  0.1   0:03.43 httpd                                                          
30565 apache    20   0  314m  14m 3488 S  1.3  0.1   0:02.07 httpd 

saída 'df'

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg-root  461164576  45283168 392455568  11% /
tmpfs                  8165916         0   8165916   0% /dev/shm
/dev/sda1               247919     72922    162197  32% /boot
/dev/mapper/vg-tmp     1032088    137344    842316  15% /tmp

saída 'iostat'

Linux 2.6.32-220.el6.x86_64 (domain redacted)   09/05/2012  _x86_64_    (8 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.88    0.00    0.49    1.53    0.00   93.09

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              18.03        98.46       787.86   17060770  136515216
dm-0             76.33        98.15       605.19   17006740  104862680
dm-1              0.00         0.02         0.00       3176          0
dm-2             22.78         0.21       182.06      35730   31546312
    
por Stratus 06.09.2012 / 00:44

1 resposta

0

Existem dois lugares para começar a diagnosticar isto:

  1. Verifique se o MySQL precisa de ajuste; O mysqltuner é uma ótima ferramenta automatizada para verificar sua configuração (incluindo estatísticas ao vivo) em relação à configuração recomendada.

  2. Veja quantos arquivos estão em /tmp quando o desempenho é baixo, e qual sistema de arquivos é - e também quão "grande" é o diretório. Se for super-enorme ou tiver muitos arquivos, você pode se beneficiar colocando-o em tmpfs , que deve ser um pouco mais rápido. (... ou evitando muitos arquivos lá.):

O ponto de partida mais provável é descobrir se sua carga de produção está causando problemas de ajuste com o MySQLtuner.

    
por 06.09.2012 / 00:48