SOAP hizmetine ters proxy yapmak için mod_proxy kullanılırken aralıklı hata


17

Bir SOAP web hizmetine ters proxy olarak mod_proxy kullanırken bu hatayı birkaç dakikada bir alıyorum. Saniyede muhtemelen 3 veya 4 istek var, bu yüzden bu hataya sahip her binde 1 veya 2'den bahsediyoruz.

[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

Bu, isteğin başarısız olmasına neden olur. İstemcinin proxy'yi kullanmadan doğrudan sabun sunucusuna bağlanması durumunda, başarı% 100'dür, bu nedenle sorun proxy'de görünüyor

Yapılandırma şöyle görünür. Amaç, birincil sunucu kullanılamıyorsa bir yedekleme sunucusuna geçmektir:

<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 

Biri bunun içine girdi ve bir düzeltme buldu mu? Hata raporlarında bazı sözler var, ancak çözüm yok. Alışılmadık olabilecek tek şey, istemci isteğinin 100 MB veya daha büyük olabileceğinden, isteğin bir SOAP çağrısı için beklediğinizden biraz daha uzun sürebilir.


David Purdue (SetEnv proxy-initial-not-pooled 1) tarafından verilen yanıt günümüzde geçerli bir cevaptır (2016).
MattBianco

Yanıtlar:



5

Apache belgelerini buradan not edin: http://httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

Mod_proxy_http'de bir yarış durumu var gibi görünüyor, ancak aşağıdakileri ekleyerek önlenebilir:

SetEnv proxy-initial-not-pooled 1

Bu, ilk istekse Apache'nin birleştirilmiş bir bağlantı kullanmasını önler.

Belge, bu ayarın performans düşüşüne neden olacağını belirtiyor.


1
proxy-initial-not-pooledyalnızca httpd 2.2'nin bir parçası olmadığına inandığım belirli bir yamanız varsa etkilidir. Httpd 2.4 hakkında bir fikrim yok. Bkz. Bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

AH01102: error reading status line from remote serverMod_reqtimeout apache modülünü ve bu conf yönergesini kullanarak bu ilgili hata mesajını ( ) da bastırabilirsiniz :

RequestReadTimeout header=30

Reqtimeout modülünü aşağıdaki gibi etkinleştirmeniz gerekecektir:

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.