Como posso configurar o Apache para usar mais da minha CPU?

2

Os threads do Apache estão se acumulando em um dos meus servidores web (300-500 solicitações simultâneas, algumas demorando 3-8s para serem processadas!), mas o uso da CPU é muito baixo (~ 10%). O tempo de carregamento da página está desacelerando como resultado. Eu tenho muito poder de CPU ocioso. Como posso usar mais para lidar com esses segmentos mais rapidamente?

Aqui está o topo do topo ...

Tasks: 469 total,   1 running, 468 sleeping,   0 stopped,   0 zombie
Cpu(s):  8.1% us,  1.7% sy,  0.0% ni, 90.3% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   9181012k total,  7998772k used,  1182240k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                 
11351 apache    15   0  364m  30m  17m S 11.9  0.3   0:00.73 httpd                                                                                                                                                                                                                                                    
 7527 apache    15   0  365m  36m  23m S  8.6  0.4   0:01.76 httpd                                                                                                                                                                                                                                                    
 7607 apache    16   0  364m  35m  22m S  2.3  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
11498 apache    17   0  359m  19m  11m S  2.3  0.2   0:00.07 httpd                                                                                                                                                                                                                                                    
11497 apache    16   0  362m  23m  13m S  1.7  0.3   0:00.05 httpd                                                                                                                                                                                                                                                    
 1840 apache    15   0  366m  44m  29m S  1.3  0.5   0:03.74 httpd                                                                                                                                                                                                                                                    
 5358 apache    15   0  364m  36m  24m S  1.3  0.4   0:02.58 httpd                                                                                                                                                                                                                                                    
 8090 apache    15   0  365m  31m  17m S  1.3  0.3   0:01.10 httpd                                                                                                                                                                                                                                                    
11346 apache    15   0  361m  28m  18m S  1.3  0.3   0:00.12 httpd                                                                                                                                                                                                                                                    
 4051 apache    16   0  365m  40m  27m S  1.0  0.5   0:01.72 httpd                                                                                                                                                                                                                                                    
32575 apache    16   0  365m  42m  28m S  0.7  0.5   0:03.62 httpd                                                                                                                                                                                                                                                    
 5145 apache    16   0  365m  37m  24m S  0.7  0.4   0:02.23 httpd                                                                                                                                                                                                                                                    
 8173 apache    16   0  363m  35m  23m S  0.7  0.4   0:00.29 httpd                                                                                                                                                                                                                                                    
 5466 apache    15   0  365m  31m  18m S  0.3  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 7420 apache    16   0  364m  36m  23m S  0.3  0.4   0:01.24 httpd                                                                                                                                                                                                                                                    
11485 apache    16   0  362m  23m  12m S  0.3  0.3   0:00.04 httpd                                                                                                                                                                                                                                                    
    1 root      15   0 10272  612  584 S  0.0  0.0   0:02.78 init                                                                                                                                                                                                                                                     
30129 root      16  -4 12536  400  396 S  0.0  0.0   0:00.00 udevd                                                                                                                                                                                                                                                    
30402 root      16   0  5840  580  480 S  0.0  0.0   0:14.01 syslogd                                                                                                                                                                                                                                                  
30414 rpc       18   0  7992  408  404 S  0.0  0.0   0:00.00 portmap                                                                                                                                                                                                                                                  
30439 root      18   0 10088  548  544 S  0.0  0.0   0:00.00 rpc.statd                                                                                                                                                                                                                                                
30478 memcache  15   0  141m 5364  516 S  0.0  0.1   1:16.34 memcached                                                                                                                                                                                                                                                
30496 root      16   0 60604  744  636 S  0.0  0.0   0:07.31 sshd                                                                                                                                                                                                                                                     
30507 root      15   0 21572  796  688 S  0.0  0.0   0:04.56 xinetd                                                                                                                                                                                                                                                   
31817 root      15   0  166m  932  860 S  0.0  0.0   0:00.03 httpsd                                                                                                                                                                                                                                                   
31820 psaadm    15   0  175m 7992 4596 S  0.0  0.1   0:02.31 httpsd                                                                                                                                                                                                                                                   
31924 root      15   0 19704  924  552 S  0.0  0.0   0:02.50 crond                                                                                                                                                                                                                                                    
13316 root      16   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 1655 root      19   0  8600 1180  972 S  0.0  0.0   0:00.00 mysqld_safe                                                                                                                                                                                                                                              
 1695 mysql     16   0 4268m 464m 4684 S  0.0  5.2  10:05.19 mysqld                                                                                                                                                                                                                                                   
32564 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
28489 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.00 sshd                                                                                                                                                                                                                                                     
32152 root      16   0 98528 3612 2780 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 5781 root      15   0 98528 3628 2796 S  0.0  0.0   0:00.01 sshd                                                                                                                                                                                                                                                     
 7801 root      17   0  356m  11m 5472 S  0.0  0.1   0:05.74 httpd                                                                                                                                                                                                                                                    
 7804 apache    16   0  366m  36m  21m S  0.0  0.4   0:00.35 httpd                                                                                                                                                                                                                                                    
 7805 apache    16   0  370m  31m  13m S  0.0  0.4   0:00.11 httpd                                                                                                                                                                                                                                                    
 8172 apache    15   0  366m  34m  19m S  0.0  0.4   0:00.62 httpd                                                                                                                                                                                                                                                    
 9430 apache    16   0  365m  45m  32m S  0.0  0.5   0:02.67 httpd                                                                                                                                                                                                                                                    
11393 apache    16   0  363m  37m  25m S  0.0  0.4   0:00.75 httpd                                                                                                                                                                                                                                                    
11551 apache    17   0  360m  31m  22m S  0.0  0.4   0:00.24 httpd                                                                                                                                                                                                                                                    
32345 apache    16   0  364m  39m  27m S  0.0  0.4   0:02.86 httpd                                                                                                                                                                                                                                                    
32472 apache    16   0  394m  70m  27m S  0.0  0.8   0:03.77 httpd                                                                                                                                                                                                                                                    
32488 apache    16   0  364m  42m  29m S  0.0  0.5   0:02.38 httpd                                                                                                                                                                                                                                                    
32501 apache    16   0  365m  41m  28m S  0.0  0.5   0:01.71 httpd                                                                                                                                                                                                                                                    
32644 apache    16   0  365m  36m  23m S  0.0  0.4   0:01.79 httpd                                                                                                                                                                                                                                                    
32765 apache    15   0  364m  39m  26m S  0.0  0.4   0:02.65 httpd                                                                                                                                                                                                                                                    
 1334 apache    16   0  368m  42m  26m S  0.0  0.5   0:02.77 httpd                                                                                                                                                                                                                                                    
 1339 apache    15   0  362m  39m  29m S  0.0  0.4   0:01.84 httpd                                                                                                                                                                                                                                                    
 1351 apache    15   0  364m  43m  30m S  0.0  0.5   0:02.59 httpd                                                                                                                                                                                                                                                    
 1553 apache    16   0  363m  41m  29m S  0.0  0.5   0:02.74 httpd                                                                                                                                                                                                                                                    
 1555 apache    16   0  365m  37m  24m S  0.0  0.4   0:01.59 httpd                                                                                                                                                                                                                                                    
 1564 apache    15   0  365m  40m  27m S  0.0  0.5   0:01.88 httpd                                                                                                                                                                                                                                                    
 1569 apache    16   0  364m  35m  22m S  0.0  0.4   0:00.63 httpd                                                                                                                                                                                                                                                    
 1573 apache    15   0  367m  39m  24m S  0.0  0.4   0:01.66 httpd                                                                                                                                                                                                                                                    
 1575 apache    16   0  363m  36m  24m S  0.0  0.4   0:01.88 httpd                                                                                                                                                                                                                                                    
 1583 apache    16   0  364m  34m  21m S  0.0  0.4   0:01.92 httpd                                                                                                                                                                                                                                                    
 1594 apache    15   0  367m  44m  29m S  0.0  0.5   0:03.71 httpd                                                                                                                                                                                                                                                    
 1689 apache    15   0  365m  38m  24m S  0.0  0.4   0:01.47 httpd                                                                                                                                                                                                                                                    
 1690 apache    15   0  365m  39m  26m S  0.0  0.4   0:01.18 httpd                                                                                                                                                                                                                                                    
 1710 apache    16   0  363m  34m  23m S  0.0  0.4   0:00.99 httpd                                                                                                                                                                                                                                                    
 1725 apache    15   0  364m  39m  26m S  0.0  0.4   0:01.80 httpd                                                                                                                                                                                                                                                    
 1726 apache    16   0  365m  40m  26m S  0.0  0.5   0:00.90 httpd                                                                                                                                                                                                                                                    
 1737 apache    16   0  364m  30m  17m S  0.0  0.3   0:00.46 httpd                                                                                                                                                                                                                                                    
 1919 apache    15   0  363m  34m  22m S  0.0  0.4   0:00.83 httpd                                                                                                                                                                                                                                                    
 1930 apache    16   0  364m  33m  21m S  0.0  0.4   0:00.50 httpd                                                                                                                                                                                                                                                    
 1934 apache    15   0  364m  40m  27m S  0.0  0.5   0:02.20 httpd

E configurações críticas do httpd.conf:

Timeout 120
KeepAlive On
MaxKeepAliveRequests 200
KeepAliveTimeout 3

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
    
por Ryan 20.01.2012 / 02:11

2 respostas

4

Para configurar o Apache para usar mais a sua CPU, você precisa se livrar do gargalo que atualmente está impedindo o Apache de usar mais CPU. Como os pedidos levam de 3 a 8 segundos para serem concluídos, você sabe que há algum tipo de gargalo, você precisa encontrá-lo.

As coisas para ver são:

  • Determine se o host do Apache é o gargalo. Se você executar uptime enquanto as solicitações estiverem demorando de 3 a 8 segundos, a carga será mostrada como alta (nos dígitos duplos ou triplos)? Você não pode realmente ler muito sobre isso, porque uma carga alta pode significar que o problema existe em outro lugar, mas se a carga estiver baixa enquanto as solicitações estiverem demorando de 3 a 8 segundos, provavelmente é um problema remoto.
  • Se você tiver recursos exigidos por esse serviço em outras máquinas, como um banco de dados, verifique também o carregamento do sistema.
  • Observe a saída de "vmstat 1" no servidor. Isso mostrará as estatísticas de utilização do sistema, atualizadas a cada segundo. As coisas para olhar são "cpu wa" (se for dois dígitos provavelmente significa que o disco está saturado), e "swap si / so" (se não forem zero significa que você está sem memória), e "cpu id "(tempo ocioso da CPU, se este for < 10, sua CPU está saturada). Se o tempo "cpu sy" é alto, isso pode indicar que você está forking muito (talvez o Apache MaxRequests seja muito baixo?) Ou outro overhead no nível do kernel. Pressione Control-C para finalizar a saída "vmstat 1".
  • Você pode executar "strace -p [APACHE PROCEED ID]" para ter uma ideia do que os processos do Apache estão fazendo. Isso mostra as chamadas do sistema que estão fazendo, mas se você não estiver familiarizado com as chamadas do sistema, às vezes, poderá obter informações apenas lendo a saída como texto. Por exemplo, na semana passada eu tive um servidor que estava agindo como o seu e o strace fazia uma pausa por vários segundos com a última coisa que era exibida era uma mensagem de log, e eu rastrei para um arquivo PHP que estava enviando um monte de log mensagens para o syslog.

Se você não tem "munin" instalado, provavelmente deveria. Se fizer isso, examine os gráficos para ver como a utilização do sistema muda quando o sistema está respondendo lentamente e quando está funcionando bem. Se você ver saltos nos gráficos, eles podem indicar onde está o gargalo. Se você vir áreas em branco em all os gráficos, isso provavelmente significa que o sistema está saturado. Se apenas os gráficos do Apache estiverem em branco, isso provavelmente significa que o Apache atingiu suas conexões máximas, provavelmente um efeito colateral dos problemas de desempenho.

Observe também que, se você tiver várias CPUs, mas tiver um aplicativo single-threaded como o Zope sentado atrás do Apache, pode ser que uma de suas CPUs esteja saturada, onde as outras estão ociosas. Se você pressionar "1" na parte superior, isso mostrará a utilização de cada núcleo individual. Procure um que esteja a 0% inativo o tempo todo, onde os outros estão muito mais ociosos.

Usando essas técnicas, consegui isolar e resolver a maioria dos problemas de desempenho semelhantes a isso.

    
por 20.01.2012 / 05:34
0

Se você observar as várias perguntas e respostas anteriores sobre o desempenho do apache, receberá algumas dicas.

Você omitiu muitas informações do seu arquivo httpd.conf que precisávamos para ver como o servidor está configurado - otoh você incluiu tanto a configuração do thread quanto a anterior - que você está usando?

CPU usage is very low (~10%). Page load time is slowing way down as a result

Não - você tem isso completamente ao contrário. O tempo de carregamento da página está diminuindo, mas a única coisa que pode ser descartada como contribuição para a lentidão é a CPU.

Existem talvez coisas que você pode fazer com a CPU, o que pode aliviar problemas de desempenho em outros lugares (usando compactação, invasão de software), mas realmente a falha está em outro lugar.

Qual é o RTT médio (do tráfego HTTP, não do ICMP)? Quanto disco I / O existe? Como é o perfil de memória? Você está apenas atendendo conteúdo estático? Se não o que mais está envolvido na geração do conteúdo? Você monitorou o tráfego de rede dentro / fora do servidor para ver se há algo lá que você não esperava? Você auditou as instruções de armazenamento em cache publicadas?

    
por 20.01.2012 / 10:47