Eu recebo esse erro a cada poucos minutos ao usar o mod_proxy como um proxy reverso para um serviço da web SOAP. Provavelmente existem 3 ou 4 solicitações por segundo, por isso estamos falando de 1 ou 2 em cada mil que possuem esse erro.
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] (20014)Internal error: proxy: error reading status line from remote server soap1.server:8888
[Tue Nov 23 11:44:14 2010] [error] [client 172.16.1.31] proxy: Error reading from remote server returned by /someapp/path/to/web/service
Isso faz com que a solicitação falhe. Se eu tiver o cliente conectado diretamente ao servidor soap sem usar o proxy, o sucesso será de 100%, portanto o problema parece estar no proxy
A configuração é assim. O objetivo é alternar para um servidor de backup se o principal não estiver disponível:
<Proxy balancer://apicluster>
BalancerMember http://soap1.server:8888 lbset=0
BalancerMember http://soap2.server:8888 lbset=1
</Proxy>
ProxyPass /someapp balancer://apicluster/someapp
ProxyPassReverse / balancer://apicluster/someapp
Alguém já se deparou com isso e encontrou uma correção? Há algumas menções nos relatórios de erros, mas não há soluções. A única coisa que pode ser incomum é que a solicitação do cliente pode ter 100 MB ou mais; portanto, a solicitação pode demorar um pouco mais do que o esperado para uma chamada SOAP.
fonte
Respostas:
Caso alguém encontre isso. Este é um bug no mod_proxy que pode ser evitado colocando estas linhas no seu httpd.conf:
https://issues.apache.org/bugzilla/show_bug.cgi?id=37770
Para informações sobre o que essas variáveis fazem, consulte a
mod_proxy
documentação . Eles possuem uma seção específica, Protocolo de Ajuste, que trata dessas variáveis.fonte
Tome nota da documentação do Apache aqui: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html
Parece que existe uma condição de corrida em mod_proxy_http, mas pode ser evitada incluindo:
O que impede o Apache de usar uma conexão em pool se esta for uma solicitação inicial.
O documento observa que essa configuração fornecerá um downgrade de desempenho.
fonte
proxy-initial-not-pooled
só é eficaz se você tiver um patch específico, que acredito não fazer parte do httpd 2.2. Eu não sei sobre o httpd 2.4. Veja bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88Você também pode suprimir essa mensagem de erro relacionada (
AH01102: error reading status line from remote server
) usando o módulo apache mod_reqtimeout e esta diretiva conf:Você provavelmente precisará ativar o módulo reqtimeout, da seguinte maneira:
fonte