Errore intermittente durante l'utilizzo di mod_proxy per eseguire il proxy inverso al servizio SOAP


17

Ottengo questo errore ogni pochi minuti quando utilizzo mod_proxy come proxy inverso a un servizio Web SOAP. Probabilmente ci sono 3 o 4 richieste al secondo, quindi stiamo parlando di circa 1 o 2 su mille che hanno questo errore.

[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

Ciò causa l'esito negativo della richiesta. Se il client si collega direttamente al server soap senza utilizzare il proxy, il successo è del 100%, quindi il problema sembra essere nel proxy

La configurazione è simile a questa. Lo scopo è passare a un server di backup se quello primario non è disponibile:

<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 

Qualcuno si è imbattuto in questo e ha trovato una soluzione? Ci sono alcune menzioni nelle segnalazioni di bug ma nessuna soluzione. L'unica cosa che può essere insolita è che la richiesta del client potrebbe essere di almeno 100 MB, quindi la richiesta potrebbe richiedere un po 'più di quanto ci si aspetterebbe da una chiamata SOAP.


La risposta di David Purdue (SetEnv proxy-iniziale-non-pool 1) è una risposta valida al giorno d'oggi (2016).
MattBianco,

Risposte:



5

Prendi nota della documentazione di Apache qui: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

Sembra che ci sia una condizione di competizione in mod_proxy_http, ma può essere evitato includendo:

SetEnv proxy-initial-not-pooled 1

Ciò impedisce ad Apache di utilizzare una connessione in pool se questa è una richiesta iniziale.

Il documento rileva che questa impostazione fornirà un downgrade delle prestazioni.


1
proxy-initial-not-pooledè efficace solo se si dispone di una patch specifica, che credo non faccia parte di httpd 2.2. Non conosco httpd 2.4. Vedi bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

Puoi anche sopprimere questo messaggio di errore correlato ( AH01102: error reading status line from remote server) usando il modulo apache mod_reqtimeout e questa direttiva conf:

RequestReadTimeout header=30

Probabilmente dovrai abilitare il modulo reqtimeout, come segue:

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.