o apache não atende a solicitações, embora o uso da cpu seja muito baixo

1

Estou trabalhando com o ajuste de um servidor apache em uma pilha LAMP em uma instância do m3.medium ec2 executando o Amazon Linux.

Algumas semanas atrás, o mysql começou a travar o tempo todo e parecia que era o apache (2.2) causando o problema devido a problemas de memória. Fizemos algumas análises e alteramos a configuração para números muito menores de servidores. Isso resolveu o problema do mysql, mas acabou com o xmas quando havia níveis muito menores de tráfego. Desde então, temos aumentado gradualmente o número de servidores para tentar encontrar o nível ideal para o servidor.

O Apache agora está mostrando um comportamento inesperado. Depois de um certo período de tempo leva muito tempo para atender novas solicitações (minutos), quando eu verifico top etc, quando isso está acontecendo, o uso da CPU pode ser tão baixo quanto 0%, mas é sempre muito baixo, é como se o apache não estivesse fazendo nada . Há um monte de processos apache no topo da leitura, mas é como se eles não estivessem fazendo nada. Eu tentei desativar o KeepAlive caso eles estivessem sendo amarrados dessa maneira, mas isso não fez diferença.

Ainda estamos usando o prefork MPM (no processo de configuração de novo servidor para alterar isso) config é assim

StartServers       10
MinSpareServers    10
MaxSpareServers   30
ServerLimit      40
MaxClients       40
MaxRequestsPerChild  2000

KeepAlive Off

Alguém pode me ajudar a entender o que está acontecendo? Meu entendimento do Apache é muito limitado para entender o que está errado, mas minha intuição está me dizendo que os processos do apache estão ficando amarrados de alguma forma. Eu tentei olhar para o mod_status mas ele não servirá nesta situação porque o pedido fica lá esperando que o apache responda. No momento, estou tendo que simplesmente redefinir o apache regularmente, o que está longe do ideal. Eu incluí um monte de opções de monitoração abaixo, espero que elas possam lançar alguma luz sobre o que está acontecendo ou sobre o que eu devo ver a seguir.

Muito obrigado.

saída de livre:

             total       used       free     shared    buffers     cached
Mem:          3578       3481         96          0         22        550
-/+ buffers/cache:       2909        669
Swap:         1023        226        797

saída do topo

top - 10:35:15 up 12 days, 14:14,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 189 total,   1 running, 188 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   3664028k total,  3559768k used,   104260k free,    21076k buffers
Swap:  1048572k total,   232500k used,   816072k free,   559268k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
19973 apache    20   0 1042m 346m 271m S  0.0  9.7   1:17.08 httpd
19964 apache    20   0 1030m 327m 266m S  0.0  9.2   1:11.35 httpd
19970 apache    20   0 1019m 316m 265m S  0.0  8.9   0:59.22 httpd
19981 apache    20   0 1034m 316m 249m S  0.0  8.8   1:10.28 httpd
19962 apache    20   0 1103m 312m 176m S  0.0  8.7   1:15.58 httpd
19966 apache    20   0 1040m 306m 233m S  0.0  8.6   1:24.83 httpd
19971 apache    20   0 1037m 304m 235m S  0.0  8.5   1:03.00 httpd
20848 apache    20   0 1023m 304m 248m S  0.0  8.5   1:11.44 httpd
19969 apache    20   0 1022m 303m 248m S  0.0  8.5   1:06.99 httpd
 2199 mysql     20   0  929m 299m 7656 S  0.0  8.4   2137:27 mysqld
27961 apache    20   0 1162m 288m 195m S  0.0  8.1   0:33.04 httpd
19968 apache    20   0 1049m 275m 194m S  0.0  7.7   1:09.61 httpd
20846 apache    20   0 1027m 272m 212m S  0.0  7.6   1:08.45 httpd
30931 apache    20   0 1062m 270m 177m S  0.0  7.6   0:21.48 httpd
21038 apache    20   0 1049m 269m 187m S  0.0  7.5   1:03.50 httpd
19984 apache    20   0 1023m 267m 211m S  0.0  7.5   1:01.80 httpd
19960 apache    20   0 1060m 259m 166m S  0.0  7.3   1:01.87 httpd
19972 apache    20   0 1025m 258m 202m S  0.0  7.2   1:01.66 httpd
19965 apache    20   0 1031m 256m 192m S  0.0  7.2   1:05.59 httpd
19963 apache    20   0 1022m 248m 192m S  0.0  6.9   0:55.78 httpd
19961 apache    20   0 1037m 247m 177m S  0.0  6.9   1:18.43 httpd
30934 apache    20   0 1019m 242m 189m S  0.0  6.8   0:07.20 httpd
30932 apache    20   0 1062m 233m 140m S  0.0  6.5   0:09.04 httpd
24211 apache    20   0 1020m 230m 177m S  0.0  6.4   0:39.03 httpd
19974 apache    20   0 1020m 227m 174m S  0.0  6.4   1:14.78 httpd
31298 apache    20   0 1015m 215m 168m S  0.0  6.0   0:05.64 httpd
  406 apache    20   0 1146m 181m  94m S  0.0  5.1   0:08.68 httpd
31297 apache    20   0 1033m 161m  96m S  0.0  4.5   0:08.05 httpd
  408 apache    20   0 1020m 139m  86m S  0.0  3.9   0:02.53 httpd
 1370 apache    20   0 1041m 136m  53m S  0.0  3.8   0:02.26 httpd
 1372 apache    20   0 1019m 125m  73m S  0.0  3.5   0:01.01 httpd
 1392 apache    20   0 1041m 111m  37m S  0.0  3.1   0:02.18 httpd
 1402 apache    20   0 1107m 100m  52m S  0.0  2.8   0:00.33 httpd
 1542 apache    20   0 1013m  97m  51m S  0.0  2.7   0:00.88 httpd
 1362 apache    20   0  999m  92m  52m S  0.0  2.6   0:01.03 httpd
 1424 apache    20   0  997m  91m  53m S  0.0  2.6   0:00.60 httpd
 1410 apache    20   0  997m  91m  53m S  0.0  2.6   0:00.38 httpd
  407 apache    20   0 1019m  91m  39m S  0.0  2.6   0:01.17 httpd
 1427 apache    20   0  997m  91m  52m S  0.0  2.6   0:00.57 httpd
 1371 apache    20   0 1013m  83m  37m S  0.0  2.3   0:00.31 httpd
 1541 apache    20   0  981m  57m  34m S  0.0  1.6   0:00.17 httpd
32187 root      20   0  967m  26m  17m S  0.0  0.7   0:02.49 httpd

saída do sar -u

06:10:01 AM     all     18.23      0.00      2.03      2.42     15.23     62.09
06:20:01 AM     all     50.85      0.00      2.84      0.46     40.40      5.45
06:30:02 AM     all     48.69      0.00      2.76      0.63     38.56      9.35
06:40:01 AM     all     47.25      0.00      2.85      1.60     37.61     10.70
06:50:02 AM     all     50.16      0.00      3.52      0.57     40.73      5.03
07:00:01 AM     all     47.51      0.00      2.76      0.75     37.77     11.21
07:10:01 AM     all     35.43      0.00      2.65      1.73     28.79     31.40
07:20:02 AM     all     19.84      0.00      2.10      2.21     16.67     59.19
07:30:02 AM     all     24.34      0.00      2.30      2.28     20.17     50.91
07:40:02 AM     all     18.45      0.00      1.66      1.97     15.14     62.78
07:50:01 AM     all     22.23      0.00      2.32      2.92     18.55     53.98
08:00:02 AM     all     19.60      0.00      1.98      2.31     16.21     59.90
08:10:02 AM     all     18.17      0.00      2.00      3.72     15.07     61.04
08:20:01 AM     all     13.80      0.00      1.72      3.27     11.73     69.48
08:30:01 AM     all     11.79      0.00      1.50      3.40     10.03     73.28
08:40:01 AM     all     16.59      0.00      1.95      2.73     14.02     64.71
08:50:01 AM     all     18.04      0.00      1.96      2.37     15.26     62.38
09:00:02 AM     all     17.94      0.00      2.16      2.79     15.20     61.91
09:10:01 AM     all      4.97      0.00      0.82      1.07      4.46     88.69
09:20:01 AM     all      0.18      0.00      0.28      0.19      0.50     98.85
09:30:01 AM     all      0.13      0.00      0.19      0.05      0.41     99.21
09:40:01 AM     all      0.17      0.00      0.19      0.07      0.43     99.14
09:50:01 AM     all      0.13      0.00      0.21      0.03      0.45     99.18
10:00:02 AM     all      0.17      0.00      0.23      0.05      0.47     99.08
10:10:02 AM     all      0.14      0.00      0.20      0.04      0.44     99.18

10:10:02 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
10:20:01 AM     all      0.16      0.00      0.24      0.03      0.49     99.08
10:30:01 AM     all      0.14      0.00      0.21      0.03      0.43     99.19
Average:        all     19.78      0.03      1.78      2.19     16.21     60.01

saída do sar -r

06:00:02 AM    135820   3528208     96.29    194768   1170836   2544680     54.00
06:10:01 AM    140220   3523808     96.17    196932   1174256   2531460     53.72
06:20:01 AM    133368   3530660     96.36    199088   1180468   2534200     53.77
06:30:02 AM     75624   3588404     97.94    201796   1187420   2590456     54.97
06:40:01 AM     56112   3607916     98.47    201388   1138840   2669548     56.65
06:50:02 AM     83040   3580988     97.73    195960   1120028   2659192     56.43
07:00:01 AM     56500   3607528     98.46    198812   1128004   2688464     57.05
07:10:01 AM     82508   3581520     97.75    201584   1080180   2699568     57.28
07:20:02 AM    118984   3545044     96.75    204008   1061088   2681724     56.91
07:30:02 AM     48180   3615848     98.69    206580   1053828   2757888     58.52
07:40:02 AM     98828   3565200     97.30    208404   1010216   2752216     58.40
07:50:01 AM     53364   3610664     98.54    181868    961276   2943300     62.46
08:00:02 AM     72516   3591512     98.02    132032    820096   3182764     67.54
08:10:02 AM     97400   3566628     97.34     81824    793872   3254192     69.05
08:20:01 AM    105988   3558040     97.11     77336    796660   3239836     68.75
08:30:01 AM    110324   3553704     96.99     71368    805276   3242836     68.81
08:40:01 AM     89500   3574528     97.56     79736    814620   3255128     69.07
08:50:01 AM    137284   3526744     96.25     83296    817316   3192548     67.74
09:00:02 AM     28812   3635216     99.21     62000    723488   3599616     76.38
09:10:01 AM     42524   3621504     98.84     28976    601588   3792068     80.47
09:20:01 AM     71276   3592752     98.05     25720    583384   3782844     80.27
09:30:01 AM     81648   3582380     97.77     22472    573408   3784820     80.31
09:40:01 AM     87440   3576588     97.61     21816    573048   3784832     80.31
09:50:01 AM     80876   3583152     97.79     21860    572996   3785180     80.32
10:00:02 AM     88716   3575312     97.58     22032    569412   3783548     80.29
10:10:02 AM     90332   3573696     97.53     22312    569088   3779908     80.21

10:10:02 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
10:20:01 AM     88780   3575248     97.58     22612    567108   3783600     80.29
10:30:01 AM     90904   3573124     97.52     22932    566772   3780868     80.23
Average:       168071   3495957     95.41    129184    898526   2965883     62.94

ATUALIZAÇÃO: Realmente aprecio os comentários e ajude nisso. Estou adicionando mais informações básicas aqui:

O tamanho dos processos do apache (e, portanto, dos servidores não.) é algo que eu estou questionando. Poderiam os tamanhos de processo grandes serem sintomáticos de um problema? Quando reduzi o número de servidores para 8, o tamanho dos processos do apache foi para (200Mb-400Mb), mesmo após o reinício. Quando eu aumentei para mais servidores, o tamanho diminuiu consideravelmente para algo como (60mB), mas com o tempo eles aumentaram de tamanho, como pode ser visto na saída superior acima. Então estou um pouco incerto sobre não. servidores - Parecia que o apache estava apenas pegando a memória disponível quando havia um menor não. de servidores - é que uma interpretação razoável disso?

Estamos executando o apc em alguns dos hosts virtuais, particularmente as duas instalações do magento que estão no servidor.

Eu desliguei o KeepAlive para ver se isso afetava o tamanho crescente do processo, não parecia ter efeito, mas mantive-o desligado enquanto tentava resolver isso para eliminá-lo da equação. Nós também tentamos usar um valor baixo para MaxRequestsPerChild de 200, caso houvesse um problema lá.

O servidor tem memória 4G, mas como não consigo descobrir o que realmente é o tamanho médio do processo (devido à variabilidade dependendo das configurações do apache) eu adotei isso, comecei baixo, aumentei o apprach e vi o livre memória em free -m (olhando para buffers / linha de cache)

obrigado pela entrada aqui.

    
por Tofuwarrior 06.01.2018 / 00:01

1 resposta

1

Parece haver uma inconsistência entre as listagens sar -u e top . Algo não listado está usando muito CPU. Tente alterar a ordem de classificação de topo para% CPU para ver onde a CPU está indo.

Parece que você tem um vazamento de memória grave no aplicativo que está executando sob o apache. Tente reduzir MaxRequestsPerChild para 200 ou 100. Isso deve fazer com que os servidores sejam reciclados antes que vazem muita memória.

Reduzir MaxSpareServers para 10 ou mais pode liberar mais memória.

Eu uso um formato de log modificado para mostrar o tempo de execução das solicitações. Você pode usar o campo de tempo de execução para determinar se as solicitações demoram muito para serem atendidas. Este é o formato de log que eu uso para um host com vários servidores virtuais no mesmo arquivo de log. O valor %(ms)T substitui o %l , que é sempre - . a menos que o IdentityCheck esteja ativado. (IdentityCheck confia em ident sendo ativado no servidor remoto, o que é altamente improvável.)

# Modified log format with virtual host, execution time, and query params
LogFormat "%v:%p %a %{ms}T %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" local
    
por 06.01.2018 / 03:19