Configuração recomendada do Apache?

1

Desculpe por fazer uma pergunta como esta, se é muito superficial para você. Considerando as informações abaixo, como você configuraria o httpd.conf?

O tempo de carregamento das páginas chega a 30 segundos quando o servidor está ocupado.

Servidor:

Memória Quad-Xeon 3220 / 8GB / 2x250GB SATAII / 10TB BW / 1GiGE / 8 IPS (SoftLayer), CentOS 5 (64 bits) Plesk 9.5

Linux server.x.com 2.6.18-274.17.1.el5 # 1 SMP Ter Jan 10 17:25:58 EST 2012 x86_64 x86_64 x86_64 GNU / Linux

Os sites no servidor recebem, em média, cerca de 500.000 pageviews e 200 GB por dia. Existem cerca de 1500 visitantes on-line quando o servidor está ocupado de acordo com o link .

top - 11:15:08 up 23 days, 12:21,  1 user,  load average: 0.30, 1.09, 1.84
Tasks: 453 total,   1 running, 452 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.9%us,  2.8%sy,  0.0%ni, 90.3%id,  3.7%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:   8165772k total,  8065268k used,   100504k free,   348884k buffers
Swap:  1052248k total,      208k used,  1052040k free,  6466136k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                              
15573 mysql     15   0  601m  80m 4520 S 35.1  1.0   2026:37 mysqld                                                                                                               
19381 apache    15   0  307m  15m 3312 S  1.0  0.2   0:02.73 httpd                                                                                                                
13230 apache    15   0  307m  15m 3296 S  0.7  0.2   0:03.74 httpd                                                                                                                
14152 apache    15   0  307m  15m 3284 S  0.7  0.2   0:03.91 httpd                                                                                                                
16147 apache    15   0  307m  15m 3296 S  0.7  0.2   0:03.14 httpd                                                                                                                
16957 apache    15   0  307m  15m 3292 S  0.7  0.2   0:03.03 httpd               

link

Timeout 60
KeepAlive On
MaxKeepAliveRequests 300
KeepAliveTimeout 5
<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 nahha 18.02.2012 / 18:23

2 respostas

2

Coisas a considerar:

  1. O seu número máximo de clientes on-line é de ~ 1500
  2. A quantidade de memória que cada httpd processa (cerca de 300MB de sua saída) e a quantidade de memória que sua máquina possui.

Seria uma boa ideia examinar completamente o httpd.conf e remover todos os módulos desnecessários para reduzir o consumo de memória. Depois de fazer isso, você pode começar a aumentar MaxClients e ServerLimit gradualmente.

Você também deve aumentar StartServers , MinSpareServers e MaxSpareServers , mas faça isso gradualmente e monitore o uso de memória e o desempenho do site por um tempo após cada alteração.

Outras coisas a considerar seria colocar algo como Verniz na frente do Apache ou (como sugere Fernando) APC.

    
por 18.02.2012 / 21:39
2

Se possível, tente alternar para outro servidor da Web, como Nginx ou Lighttpd. O Apache é ótimo, mas geralmente não lida bem com sites movimentados.

Se você não puder, não há problema. Aqui estão algumas dicas que podem ajudar você:

1. Desativar registros

Se o seu aplicativo não depender de arquivos de log e você usar o Analytics ou outro serviço para estatísticas, poderá desabilitar os logs. Você verá a queda de E / S porque o apache não precisa gravar todos os pedidos no disco.

2. Você está usando PHP? O cache de opc é obrigatório!

Eu prefiro o APC porque ele é simples de instalar, estável e fará parte do PHP em breve. Para instalá-lo basta executar:

pecl install apc

Adicionam a seguinte linha ao seu arquivo php.ini:

extension="apc.so"

Reinicie seu servidor da web e observe o carregamento sendo interrompido.

3. Mude para outro MPM

Mudando para trabalhador ou evento O MPM pode ajudar em algumas causas. Isso realmente depende do tipo de arquivo que você está veiculando. Eu vi casos em que a carga caiu depois disso e outros estavam funcionando como prefork ou trabalhador não fez nenhuma diferença considerável.

Nota: você pode quebrar o PHP se mudar para o worker e você o estiver executando como um módulo DSO. Verifique isso primeiro.

    
por 18.02.2012 / 19:37