mod_proxyを使用してSOAPサービスへのリバースプロキシを行うときに断続的なエラーが発生する


17

mod_proxyをSOAP Webサービスのリバースプロキシとして使用すると、数分ごとにこのエラーが発生します。おそらく1秒あたり3〜4件のリクエストが送信されるため、このエラーが発生している1,000件ごとに1件または2件の問題が発生しています。

[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

これにより、リクエストが失敗します。クライアントがプロキシを使用せずに石鹸サーバーに直接接続している場合、成功は100%であるため、問題はプロキシにあるように見えます

設定は次のようになります。目的は、プライマリサーバーが使用できない場合にバックアップサーバーに切り替えることです。

<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 

誰かがこれに遭遇し、修正を見つけましたか?バグレポートにはいくつか言及されていますが、解決策はありません。珍しいかもしれない唯一のことは、クライアント要求が100MB以上になる可能性があるため、SOAP呼び出しに予想されるよりも少し時間がかかる可能性があることです。


David Purdueによる回答(SetEnv proxy-initial-not-pooled 1)は、最近(2016年)有効な回答です。
MattBianco

回答:


27

他の誰かがこれに遭遇した場合に備えて。これはmod_proxyのバグであり、httpd.confに次の行を追加することで回避できます。

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

https://issues.apache.org/bugzilla/show_bug.cgi?id=37770

これらの変数の機能に関する情報については、mod_proxyドキュメントを参照してください。これらには、これらの変数に対処する特定のセクション、プロトコル調整があります。


5

Apacheのドキュメントに注意してくださいhttp : //httpd.apache.org/docs/2.2/mod/mod_proxy_http.html

mod_proxy_httpには競合状態があるようですが、以下を含めることで回避できます。

SetEnv proxy-initial-not-pooled 1

これが最初のリクエストである場合、Apacheがプールされた接続を使用することを防ぎます。

この資料では、この設定によりパフォーマンスが低下することが記載されています。


1
proxy-initial-not-pooled特定のパッチがある場合にのみ有効です。これはhttpd 2.2の一部ではないと思います。httpd 2.4について知りません。bz.apache.org/bugzilla/show_bug.cgi?id=37770#c88
kubanczyk

0

またAH01102: error reading status line from remote server、apacheモジュールmod_reqtimeoutとこのconfディレクティブを使用して、この関連エラーメッセージ()を抑制することもできます。

RequestReadTimeout header=30

次のように、おそらくreqtimeoutモジュールを有効にする必要があります。

$ sudo a2enmod reqtimeout
$ sudo apache2ctl restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.