Tempo limite do proxy Apache

18

Estou tentando entender o que está acontecendo com a seguinte mensagem no nosso error_log do Apache 2.2:

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.asp

Estamos executando o Apache 2.2 com mod_proxy. O Apache está atingindo o tempo limite da solicitação relacionada ao seu valor de tempo limite de 5 min no httpd.conf? (O que significa que ele não recebe uma resposta do servidor remoto em 5 minutos.) Ou isso é simplesmente uma resposta do servidor remoto dizendo que não pode lidar com a conexão?

O Apache rapidamente fica sem seus MaxClients toda vez que vejo esse erro.

Exemplo rápido de entrada Proxy:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com
roacha
fonte

Respostas:

28

Você aumenta o tempo limite na diretiva ProxyPass :

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

Os valores de tempo limite estão em segundos .

uı6ʎɹnɯ ꞁəıuɐp
fonte
6
Se você ainda não está definindo o argumento de tempo limite do ProxyPass, seu Timeoutvalor global será usado. Consulte httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxytimeout e httpd.apache.org/docs/2.2/mod/core. html # timeout
sincronizar
Também estou com erro de geeting O tempo limite especificado expirou .... Tenho ProxyRequests desativado, isso está relacionado? Devo fazer isso para aumento de tempo limite ......
Ashish Karpe
5

Parece que seu servidor https://super-load1-ga.example.comestá demorando muito para responder.

Nesse cenário, se ele simplesmente permanecer lá, o processo Apache aguardará por ele. Esse processo é essencialmente bloqueado, ou seja, não pode fazer mais nada. Se você não esgotar o tempo rápido o suficiente, ficará sem processos do Apache e atingirá o MaxClients, o que parece fazer sentido.

Você deve ter registros no site super-load1-ga.test.com para ver quanto tempo as solicitações estão demorando, elas devem estar demorando uma idade.

Você pode diminuir o tempo limite na conexão ProxyPass

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers

Philip Reynolds
fonte
Obrigado pela ótima resposta Phil. Então você acha que isso está atingindo o valor principal do httpd.conf TimeOut de 5 min e o Apache está atingindo o tempo limite da sessão? Como não tenho um tempo limite específico de proxy definido, o padrão será o padrão. Na sugestão de tempo limite do Proxy, você acha que devo usar a variável ProxyTimeout ou o comando ProxySet? (ProxySet connectiontimeout = 5 timeout = 30)
roacha
2

Para responder à sua pergunta, sim, o httpd do Apache2 no modo proxy registra essa mensagem de erro quando o tempo limite do httpd do Apache2 é excedido. Se o servidor conectado ao httpd Apache2 no modo proxy fosse a causa, haveria uma mensagem diferente.

A mensagem possui várias partes: The timeout specified has expiredé o equivalente em texto do APR_TIMEUPcódigo de erro, consulte:

srclib / apr / misc / unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

Então proxy: error reading status line from remote server super-load1-ga.test.comestá em

módulos / proxy / mod_proxy_http.c

Se você aumentar o nível do seu log para APLOG_DEBUG, deverá receber uma mensagem adicional: proxy: read timeouttambém.


fonte