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.