O Apache2 roda mais rápido se eu tiver mais CPU?

2

Eu tenho um servidor de nuvem, com: 5120 RAM e 4.6Ghz

Minha pergunta é: se eu adicionar mais CPU, (11,5 Ghz), o tempo de carregamento das páginas será maior? Quero dizer, isso é sempre gradual? Mais CPU = pageload mais rápido? E se não, como funciona e como posso aprender mais sobre isso?

UPDATE: A resposta da Symcbean foi muito clara. Mas ainda há algo que não entendo (e o que encontro no Google, mais pessoas não) Eu tentei colocá-lo em um metafore:
Digamos que eu tenha um balde com água (o balde com água = o processo do PHP, com cache etc.) Eu quero esvaziar o balde em um funil. (o fim do funil = velocidade do servidor, quanto maior o final do funil, mais rápido a água passa por ele)
Se eu tiver um funil de 0,5 polegada, ele passa lentamente. Se eu tiver um de 1 polegada, vai mais rápido. Mas se o final do funil é (digamos) 10 polegadas, não importa se eu tenho 10 ou 20 polegadas, a água passa por ele na mesma velocidade. Então, com este meta quero dizer; como sei que estou usando 100% da capacidade e como sei que não preciso de mais ...?

PS: Eu realmente apreciaria se alguém pudesse explicar, qual é o máximo, e como isso realmente funciona ou como eu posso descobrir isso?

PPS: esta é a saída quando eu corro 'top'

top - 23:06:18 up 54 days,  6:08,  1 user,  load average: 0.51, 0.43, 0.47
Tasks: 107 total,   2 running, 105 sleeping,   0 stopped,   0 zombie
Cpu(s): 28.1%us,  1.5%sy,  0.0%ni, 70.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
Mem:   4966748k total,  4493968k used,   472780k free,   241436k buffers
Swap:  4194300k total,   123252k used,  4071048k free,  2836028k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                       
16432 root      20   0 1115m 283m  30m R   95  5.8   1:11.39 php                                                                                                                                            
16422 www-data  20   0  927m  45m  21m S   18  0.9   0:00.53 apache2                                                                                                                                        
20270 mysql     20   0 2327m 330m 5500 S    7  6.8 474:19.11 mysqld                                                                                                                                         
  617 n2        20   0 14268 1140  488 S    1  0.0 182:58.64 n2txd                                                                                                                                          
30212 root      20   0     0    0    0 S    1  0.0  24:50.48 flush-202:1                                                                                                                                    
26848 root      20   0 99424 1108  856 S    0  0.0   2:47.63 sendmail-mta                                                                                                                                   
    1 root      20   0 24188 1556  872 S    0  0.0   0:09.09 init                                                                                                                                           
    2 root      20   0     0    0    0 S    0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0     0    0    0 S    0  0.0   0:48.36 ksoftirqd/0                                                                                                                                    
    4 root      20   0     0    0    0 S    0  0.0   1:27.21 kworker/0:0                                                                                                                                    
    5 root      20   0     0    0    0 S    0  0.0   0:00.05 kworker/u:0                                                                                                                                    
    6 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/0                                                                                                                                    
    7 root      RT   0     0    0    0 S    0  0.0   0:26.69 watchdog/0                                                                                                                                     
    8 root      RT   0     0    0    0 S    0  0.0  21841:40 migration/1                                                                                                                                    
    9 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/1:0                                                                                                                                    
   10 root      20   0     0    0    0 S    0  0.0   0:56.84 ksoftirqd/1                                                                                                                                    
   11 root      RT   0     0    0    0 S    0  0.0   0:23.78 watchdog/1                                                                                                                                     
   12 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/2                                                                                                                                    
   13 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/2:0                                                                                                                                    
   14 root      20   0     0    0    0 S    0  0.0   0:48.05 ksoftirqd/2                                                                                                                                    
   15 root      RT   0     0    0    0 S    0  0.0   0:19.11 watchdog/2                                                                                                                                     
   16 root      RT   0     0    0    0 S    0  0.0   0:00.00 migration/3                                                                                                                                    
   17 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/3:0                                                                                                                                    
   18 root      20   0     0    0    0 S    0  0.0   0:40.08 ksoftirqd/3                                                                                                                                    
   19 root      RT   0     0    0    0 S    0  0.0   0:19.24 watchdog/3                                                                                                                                     
   20 root       0 -20     0    0    0 S    0  0.0   0:00.00 cpuset                                                                                                                                         
   21 root       0 -20     0    0    0 S    0  0.0   0:00.00 khelper                                                                                                                                        
   22 root      20   0     0    0    0 S    0  0.0   0:00.00 kdevtmpfs                                                                                                                                      
   23 root       0 -20     0    0    0 S    0  0.0   0:00.00 netns                                                                                                                                          
   24 root      20   0     0    0    0 S    0  0.0   0:00.00 kworker/u:1                                                                                                                                    
   25 root      20   0     0    0    0 S    0  0.0   0:00.00 xenwatch                                                                                                                                       
   26 root      20   0     0    0    0 S    0  0.0   0:00.00 xenbus                                                                                                                                         
   27 root      20   0     0    0    0 S    0  0.0   0:22.29 sync_supers                                                                                                                                    
   28 root      20   0     0    0    0 S    0  0.0   0:00.42 bdi-default                                                                                                                                    
   29 root       0 -20     0    0    0 S    0  0.0   0:00.00 kintegrityd                                                                                                                                    
   30 root       0 -20     0    0    0 S    0  0.0   0:00.00 kblockd                                                                                                                                        
   31 root      20   0     0    0    0 S    0  0.0   1:57.23 kworker/2:1                                                                                                                                    
   32 root       0 -20     0    0    0 S    0  0.0   0:00.00 ata_sff                                                                                                                                        
   33 root      20   0     0    0    0 S    0  0.0   0:00.00 khubd                                                                                                                                          
   34 root       0 -20     0    0    0 S    0  0.0   0:00.00 md                                                                                                                                             
   36 root      20   0     0    0    0 S    0  0.0   0:01.45 khungtaskd                                                                                                                                     
   37 root      20   0     0    0    0 S    0  0.0   0:29.28 kswapd0                                                                                                                                        
   38 root      25   5     0    0    0 S    0  0.0   0:00.00 ksmd                                                                                                                                           
   39 root      20   0     0    0    0 S    0  0.0   0:00.00 fsnotify_mark                                                                                                                                  
   40 root      20   0     0    0    0 S    0  0.0   0:00.00 ecryptfs-kthrea                                                                                                                                
   41 root       0 -20     0    0    0 S    0  0.0   0:00.00 crypto                                                                                                                                         
   49 root       0 -20     0    0    0 S    0  0.0   0:00.00 kthrotld                                                                                                                                          50 root      20   0     0    0    0 S    0  0.0   0:00.00 khvcd                                                                                                                                             51 root      20   0     0    0    0 S    0  0.0   1:19.07 kworker/3:1                                                                                                                                       70 root       0 -20     0    0    0 S    0  0.0   0:00.00 devfreq_wq                                                                                                                                        71 root      20   0     0    0    0 S    0  0.0   1:03.05 kworker/0:1                                                                                                                                      190 root      20   0     0    0    0 S    0  0.0   1:31.64 kworker/1:1                                                                                                                                      193 root      20   0     0    0    0 S    0  0.0   2:52.19 jbd2/xvda1-8        
    
por Bob van Luijt 06.01.2013 / 23:10

2 respostas

3

Não tenho certeza de onde Shane vê 4 processadores na sua saída principal. Certamente há mais de um. No entanto, sua média de carga mostra que nunca usamos mais da metade de suas CPUs. Por isso, adicionar mais CPUs não vai torná-lo mais rápido.

O tempo de resposta da página é muito diferente do tempo de execução do PHP. Normalmente, o tempo de carregamento da página estará na faixa de 6 a 10 vezes a duração do tempo para gerar o HTML (supondo que o PHP seja relativamente eficiente) - a diferença é principalmente devido a coisas acontecerem na camada de rede e no navegador. Ferramentas como yslow e webpagetest ajudará a melhorar o desempenho do front end. Recomendo que você obtenha um bom livro sobre o assunto - como este . Há muitos posts bons sobre o desempenho da web aqui e sobre Desempenho do MySQL aqui .

Coisas como top, load average, cpu usage, free e vmstat et al são boas para dizer como o desempenho do seu servidor é restrito - mas como acima isso deve ser apenas uma parte muito pequena da história do ciclo de vida da página. Do instantâneo que você forneceu, o hardware não é excessivamente sobrecarregado (pode haver um afunilamento de E / S, mas isso é difícil de ver a partir dessas métricas).

Se você tiver motivos para suspeitar que seu código PHP é bastante lento, comece a registrar e analisar seus dados de solicitação. Quanto tempo as solicitações do PHP demoram para gerar? Qual é o tempo de carregamento da sua página?

Uma coisa que se destaca da saída principal que você mostrou é que existe apenas uma única instância do PHP visível e uma única instância do Apache. Como o Apache é configurado? Qual MPM? Como se conecta ao PHP? Se você estiver usando CGI, então você deve obter grandes melhorias mudando para PHP-fpm ou mod_php. Você está usando um cache de opcode ?

Seu mysqld tem uma grande quantidade de ciclos de CPU - você pode querer começar a analisar seu log de consulta e ajustá-lo. Tente executar o mysqltuner na sua instância.

Eu percebo que estou fazendo muitas perguntas aqui, mas a solução para "como tornar meu site mais rápido" preencheria um livro muito grande. Eu levaria cerca de 2 dias de trabalho para obter um servidor devidamente instrumentado para capturar os dados para analisar completamente seu desempenho - e pelo menos 5 dias para realizar a análise - e isso antes de começar a encontrar soluções para os problemas - ou seja, você É improvável obter uma resposta específica aqui no Stack Overflow (estou apenas tentando apontar a você na direção de fazer as perguntas certas).

    
por 07.01.2013 / 00:05
3

Parece que o PHP é o gargalo da sua CPU, não o Apache.

Você parece ter 4 núcleos de CPU, mas o processo do PHP está sendo executado apenas em um deles; dependendo de como você tem as coisas configuradas, o PHP pode não estar usando todos os núcleos de CPU disponíveis para solicitações diferentes. No momento em que a carga estava nesse estado, quantas solicitações estavam sendo tratadas?

Se o PHP está executando apenas um único thread, você precisa configurá-lo para executar diferentes solicitações em diferentes núcleos para utilizar sua capacidade existente.

Se o PHP está apenas executando uma única requisição naquele momento, e essa requisição ainda está retornando muito devagar, então mais núcleos não ajudarão, e você precisará fazer alguma otimização e cache.

    
por 06.01.2013 / 23:24