Servidor Apache CentOS muito lento! Configuração errada?

1

Eu tenho um problema com a sobrecarga do servidor em uma configuração do Apache 8gb de RAM 1and1.com Virtual Server. O servidor fica extremamente lento quando atinge mais de 100 usuários ativos (de acordo com o Google Analytics) durante o horário de coleta. Eu fiz cerco & loadimpact testa e fez algumas alterações de configuração no arquivo httpd.conf, mas não sei se é o suficiente. Talvez eu só precise de mais ram como 16GB ou estou faltando alguma coisa? Eu sei que posso otimizar a programação, mas não vejo como isso irá melhorar drasticamente o desempenho. Fato interessante é que o uso de memória paralelos só exibe 10-20% durante esta sobrecarga, mas o site é tão lento! Socorro!

Avg. site file size is 1.5MB (We have lots of pictures)
Avg. load time: 1.8s (during normal days) - 1,600 page views, 270 highest sessions p/h

Estas são as estatísticas de análise de um dia de servidor muito lento:

Highest sessions per hour: 420 - 700
Total sessions: 4,300 - 37,000
Page views: 25,300 - 361,500
Avg. Session duration: 9min

Dados do servidor fornecidos por 1and1:

Webspace: 200GB
RAM: 8GB
Unlimited Traffic: yes
Operating System: CentOS 6 minimal system (64-bit)
cpu cores: 8
Processors: 4   
Processor: AMD Opteron(tm) Processor 6378 

Http.conf

Timeout 75
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 3

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

my.conf

max_allowed_packet             = 1G
max_connections                = 500                              
max_user_connections           = 500                                 
thread_cache_size              = 500                                 
query_cache_type               = 1                                   
query_cache_size               = 128M                                 
sort_buffer_size               = 2M                                 
tmp_table_size                 = 32M                                
read_buffer_size               = 128k                               
read_rnd_buffer_size           = 256k                              
join_buffer_size               = 128k                                
table_definition_cache         = 400                                
table_open_cache               = 400                                 
key_buffer_size                = 500M                                 
max_heap_table_size            = 64M                              
innodb_buffer_pool_size        = 500M                                
innodb_additional_mem_pool_size = 20M
innodb_file_per_table          = 1                                  
innodb_flush_log_at_trx_commit = 2                                  
innodb_log_buffer_size         = 12M                                                           
innodb_log_file_size           = 256M 

Estou fazendo algo errado? Eu aprecio toda a ajuda!

    
por Norm 12.12.2014 / 20:47

1 resposta

1

A primeira coisa que você precisa analisar é determinar onde está o gargalo.

  • A CPU do sistema está vinculada ou há CPU disponível, mas os processos do aplicativo da Web não estão sendo usados de maneira eficiente (ou seja, não há threads de trabalho suficientes)?
  • O sistema está sem RAM ou fazendo muitas trocas?
  • Você está afundando no seu banco de dados? Você tem consultas lentas, precisa de índices ou está com problemas de bloqueio?
  • Assista o tempo até o primeiro byte de uma solicitação de aplicativo e compare-a com a de uma solicitação de um recurso estático do servidor da Web que não toca no código do aplicativo. Isso mostrará a rapidez com que você app está processando a solicitação.

De modo geral, esses tipos de problemas de desempenho estarão no aplicativo, e não na configuração do servidor da Web.

Após entender seu gargalo, você poderá aliviá-lo com a ajuda do software do servidor da Web (os métodos exatos dependem do código do aplicativo que você está executando e de como você o anexa ao servidor da Web, mas há muita informação disponível para obter o máximo de desempenho do FastCGI ou mod_passenger ), mas só haverá muito o que você pode fazer lá.

Em resumo: não comece com o servidor web, comece com o rastreamento do gargalo e conserte-o - se você achar que pode fazer alguma coisa no seu servidor da Web para ajudar, tente isso, mas não é provável consiga corrigir um problema de desempenho com seu aplicativo.

    
por 12.12.2014 / 21:23