Recomendações de ajuste do Apache para o Windows Server 2008

3

Nós implementamos o Apache 2.4 64bit no Windows Server 2008 R2 como um proxy reverso para aproveitar um certificado curinga de nosso domínio. Ficamos desapontados com o desempenho, mesmo com uma carga leve, então eu provavelmente confiei algo errado. Os sites servidos pelo proxy (Glassfish 3.0.1) tornam-se cada vez mais lentos a ponto de não responderem. Reiniciar o Apache corrige temporariamente o problema, mas ele rapidamente não responde. Ignorando o proxy indo diretamente para o endereço IP do servidor Glassfish, podemos ver que o GF não é o problema. A única coisa que estamos fazendo é o proxy reverso do frontend SSL no Apache e passando o tráfego na rede interna com http para o servidor Glassfish.

Quando os sites não respondem, uma olhada nos processos do Windows Server indica MUITO pouca atividade. A CPU pode estar funcionando a 10% (CPU única). Existem menos de 30 conexões TCP. A utilização de memória é menor que a GB (é uma máquina de 4 GB). O tráfego de rede mal ultrapassa o limite de 100 kbps. Todas as indicações são de que o servidor mal está suando, mas o site não responde.

Eu defini as seguintes propriedades:

SSLSessionCache  "shmcb:C:/Apache_direct/logs/ssl_scache(1024000)"
SSLSessionCacheTimeout  300

ThreadsPerChild 3000
MaxRequestsPerChild 0 
KeepAlive On 
KeepAliveTimeout 15 

ProxyRequests Off
SSLStrictSNIVHostCheck off
ProxyBadHeader Ignore

Eu tenho configurações de host virtual para cada porta http e https para cada servidor. As configurações do VHost são semelhantes a:

<VirtualHost *:443>
ServerName test.domain.org
#
ProxyPreserveHost On
SSLEngine on
ProxyPass / http://192.168.80.196:8080/
ProxyPassReverse / https://192.168.80.196:8080/

</VirtualHost>

Eu perdi uma configuração importante aqui ou configurei uma configuração incorretamente? Com base no que li, o Apache deve ser capaz de lidar facilmente com o tráfego que temos, que é o seguinte:

800 visits an hour.  13k visits daily.
100 uploads an hour of roughly 60mb MP3 files.
400 downloads an hour of those same MP3 files.
800 downloads of small (100k) pdf files.

A Glassfish está atendendo a todos os uploads / downloads de arquivos e permitimos que essas sessões persistam por até uma hora. Como a maioria dos arquivos é única, estamos um pouco incertos sobre quais configurações de cache devemos usar (se houver). Talvez eu deva omitir as configurações de cache SSL?

Há muitos, muitos acessos no ajuste de desempenho do Apache na Web, mas poucos que lidam especificamente com proxy reverso, SSL e fornecem recomendações com base no tipo / quantidade de tráfego. Algumas sugestões seriam muito úteis.

    
por Pete Helgren 24.01.2013 / 17:29

1 resposta

4

Vou responder à minha própria consulta para que, se alguém se deparar com isso, pelo menos veja algum tipo de resposta ...

Nunca recebi a confirmação de que essa configuração específica estava correta, incorreta ou poderia ser melhorada. Eu sei que decidimos ir mais uma vez com as seguintes modificações (pura adivinhação da minha parte):

Threadlimit 3000
ThreadsPerChild 3000
MaxRequestsPerChild 0 
KeepAlive On 
KeepAliveTimeout 15 

AcceptFilter https none
AcceptFilter http none
EnableSendfile Off
EnableMMAP off

ProxyRequests Off
SSLStrictSNIVHostCheck off
ProxyBadHeader Ignore
HostnameLookups off
ExtendedStatus off

Não tivemos problemas de desempenho com esta configuração, por isso estamos executando em produção com ela. A questão principal, que foi como ter um bom desempenho em um ambiente de proxy reverso, foi respondida por tentativa e erro.

    
por 06.02.2013 / 17:43