Proxy reverso do Apache causando atraso de ~ 40 segundos no primeiro acesso após ocioso

2

Eu tenho uma simples configuração de proxy reverso do Apache 2.2 no OSX, com três hosts virtuais todos fornecendo autenticação SSL e Open Directory antes de encaminhar tudo para seus respectivos servidores back-end.

Para cada um dos três hosts virtuais, as coisas funcionam bem e parecem rápidas o suficiente, mas se alguma delas estiver ociosa por mais de 10 minutos (não tenho um tempo preciso disso) de nenhum host, A primeira chamada demora quase um minuto e, em seguida, as chamadas subsequentes são de < 1s. Esse atraso é definitivamente no proxy, não vejo nenhum tráfego no servidor back-end até o último segundo da espera.

O que eu poderia estar fazendo errado aqui? O que pode causar um proxy reverso para atrasar assim? Está atualizando um cache? Como faço para depurar isso?

Todos os meus hosts virtuais são parecidos, e o resto da configuração do apache é básica, apenas os módulos que eu preciso e uma configuração muito básica ...

ServerRoot "/usr"
User _www
Group _www
DefaultType text/html

Listen 80
Listen 443
Listen 6660

DocumentRoot /Volumes/data/httpd

# Basic Requirements for a proxy
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so

# Needed for OD Authentication
LoadModule apple_auth_module libexec/apache2/mod_auth_apple.so

# Needed for SSL (duh)
LoadModule ssl_module libexec/apache2/mod_ssl.so

ErrorLog /var/log/apache2/error_log
LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog /var/log/apache2/access_log common

<IfModule mod_ssl.c>
    SSLSessionCache shmcb:/var/run/ssl_scache(512000)
    SSLSessionCacheTimeout 300
    SSLMutex file:/var/log/apache2/ssl_mutex
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    AddType application/x-x509-ca-cert crt
    AddType application/x-pkcs7-crl crl
</IfModule>


NameVirtualHost *:80
NameVirtualHost *:443
NameVirtualHost *:6660


<VirtualHost *:443>
ServerName mysite.server.com

SSLEngine On
SSLProxyEngine On
SSLCipherSuite "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM"
SSLProtocol -ALL +SSLv3 +TLSv1
SSLProxyProtocol -ALL +SSLv3 +TLSv1
SSLCertificateFile "/etc/certificates/mysite.crt"
SSLCertificateKeyFile "/etc/certificates/mysite.key"

<Location />
    Order deny,allow
    Deny from all
    AuthType Basic
    Require group <my access group>
    Allow from <my test ip>

    Satisfy Any
    AuthName "MyGroup"
</Location>

SetEnv proxy-chain-auth On
ProxyPreserveHost On
ProxyPass / http://backend.mysite.com/ retry=0 keepalive=On
ProxyPassReverse / http://backend.mysite.com/
</VirtualHost>
    
por Fraser Graham 25.04.2013 / 19:32

1 resposta

1

É provável que você tenha problemas de resolução de DNS com backend.mysite.com , independentemente do nome do host. A resolução do DNS está demorando muito, mas, uma vez bem-sucedida, é armazenada em cache por alguns minutos. Uma vez que o cache expira, você volta à estaca zero e espera novamente.

Para resolver o problema, corrija o servidor DNS que estiver causando o problema ou use um endereço IP em vez do nome do host.

    
por 25.04.2013 / 19:36