JOT*_*OTN 21 mod-proxy apache-2.2
使用 mod_proxy 作为 SOAP Web 服务的反向代理时,我每隔几分钟就会收到此错误。每秒可能有 3 或 4 个请求,所以我们谈论的是每千个有此错误的请求中的 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
Run Code Online (Sandbox Code Playgroud)
这会导致请求失败。如果我让客户端在不使用代理的情况下直接连接到soap服务器,则成功率为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
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题并找到了解决方法?错误报告中有一些提及,但没有解决方案。唯一可能不寻常的是客户端请求可能为 100MB 或更大,因此该请求可能比您预期的 SOAP 调用花费的时间长一点。
JOT*_*OTN 28
以防其他人遇到这种情况。这是 mod_proxy 中的一个错误,可以通过将这些行放在 httpd.conf 中来避免:
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果这是初始请求,这会阻止 Apache 使用池连接。
该文档确实指出,此设置会降低性能。
归档时间: |
|
查看次数: |
61078 次 |
最近记录: |