apache 中的请求大小问题 + weblogic 与 mod_wl.so
我们使用 apache(2.0,带 ssl)将请求代理到安装在 weblogic 上的 Web 服务。我们已经安装了 mod_wl.so,并且对于小请求来说一切正常。 但是,对于较大的请求(例如 300 KB),apache 会停止并显示以下错误消息:
“服务器 APACHE 桥失败:没有可用于连接的后端服务器”:20 秒后超时或幂等设置为关闭。”
我们在另一台服务器中复制了该场景,但错误仍然存在(对于同一请求,它不是“20 秒”,而是“30 秒”)。
我怎样才能避免这种大小限制? 顺便说一句,无论文件有多大,Web 服务在直接从 weblogic 控制台内部测试时都可以正常工作)
感谢您的帮助!
这是 mod_wl.so 中的错误吗? ( : 更改为 mod_wl_20.so ,结果相同,这是日志的一部分:
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[内容长度]=[352196]
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124> Hdrs 到 WLS:[连接]=[保持活动]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[WL-Proxy-SSL]=[true]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[WL-Proxy-Client-IP]=[163.247.57.10]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[代理客户端 IP]=[163.247.57.10]
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124> Hdrs 到 WLS:[X-Forwarded-For]=[163.247.57.10]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[X-WebLogic-KeepAliveSecs]=[30]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs 到 WLS:[X-WebLogic-Request-ClusterInfo]=[true]
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124> Hdrs 到 WLS:[x-weblogic-cluster-hash]=[2Ik836PQKnD7XHQ2RcWGOWkcRRA]
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124> fd 23 上的写入操作失败:revents=0x00000018
Wed Sep 28 11:27:37 2011 <15359131722005124> IO 超时错误
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124> POST 超时到服务器 10.182.5.5:7005
Wed Sep 28 11:27:37 2011 <15359131722005124> ***异常类型 [WRITE_ERROR_TO_SERVER](POST ti 发送至服务器 10.182.5.5:7005 ) 在 ap_proxy.cpp
Wed Sep 28 11:27:37 2011 <15359131722005124> 第 152 行提出发送标头或将数据发送到 WebLogic、系统时出错 r#: [0] sys errmsg [成功]
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124>将 10.182.5.5:7005 标记为错误
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124>在 sendRequest 阶段遇到异常:WRITE_ERROR_TO_SER VER [os error=0,ap_proxy.cpp 第 152 行]:POST 超时到服务器 10.182.5.5:7005 2011 年 9 月 28 日星期三 11:27:37第 2994 行
<15359131722005124>在 WRITE_ERROR_TO_SERVER 异常后进行故障转移 sendRequest()
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124>尝试 #1(最多 10 次)
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124>总列表中没有留下好的服务器,正在恢复 ba 查看静态列表
2011 年 9 月 28 日星期三 11:27:37 <15359131722005124>从服务器列表中提取的主机为 [10.182.5.5]
Wed Sep 28 11:27:37 2011 <15359131722005124>从服务器列表中提取的主机为 [10.182.5.5]
Wed Sep 28 11:27:37 2011 <15359131722005124>为长度=2的列表初始化lastIndex=0
We´re using apache (2.0, with ssl) to proxy the requests to a web service installed on weblogic. We have mod_wl.so installed, and all works fine with small requests.
However, with larger requests (say, 300 KB), the apache stalls and display this error message:
"Failure of server APACHE bridge: No Backend Sever available for connections": timed out after 20 seconds or idempotent is set to off."
We replicate the scenario in another server, and the error persists (instead of "20 seconds", it says "30 seconds" for the same request).
How can I avoid this size limitation? Is it a bug in mod_wl.so? Is it a config value that is missing? (As a side note, the web service works fine when tested directly from inside the weblogic console, no matter how big the file)
Thanks for any help!
UPDATE:
changed to mod_wl_20.so with same results, here is the chunk of the log:
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[Content-Length]=[352196]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[Connection]=[Keep-Alive]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[WL-Proxy-SSL]=[true]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[WL-Proxy-Client-IP]=[163.247.57.10]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[Proxy-Client-IP]=[163.247.57.10]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[X-Forwarded-For]=[163.247.57.10]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[X-WebLogic-KeepAliveSecs]=[30]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[X-WebLogic-Request-ClusterInfo]=[true]
Wed Sep 28 11:27:37 2011 <15359131722005124> Hdrs to WLS:[x-weblogic-cluster-hash]=[2Ik836PQKnD7XHQ2RcWGOWkcRRA]
Wed Sep 28 11:27:37 2011 <15359131722005124> operation WRITE failed on fd 23: revents=0x00000018
Wed Sep 28 11:27:37 2011 <15359131722005124> IO TImed out error
Wed Sep 28 11:27:37 2011 <15359131722005124> POST timed out to the server 10.182.5.5:7005
Wed Sep 28 11:27:37 2011 <15359131722005124> ***Exception type [WRITE_ERROR_TO_SERVER] (POST ti
med out to the server 10.182.5.5:7005
) raised at line 152 of ap_proxy.cpp
Wed Sep 28 11:27:37 2011 <15359131722005124> error sending headers or Post Data to WebLogic, sys er
r#: [0] sys errmsg [Success]
Wed Sep 28 11:27:37 2011 <15359131722005124> Marking 10.182.5.5:7005 as bad
Wed Sep 28 11:27:37 2011 <15359131722005124> got exception in sendRequest phase: WRITE_ERROR_TO_SER
VER [os error=0, line 152 of ap_proxy.cpp]: POST timed out to the server 10.182.5.5:7005
at line 2994
Wed Sep 28 11:27:37 2011 <15359131722005124> Failing over after WRITE_ERROR_TO_SERVER exception in
sendRequest()
Wed Sep 28 11:27:37 2011 <15359131722005124> attempt #1 out of a max of 10
Wed Sep 28 11:27:37 2011 <15359131722005124> No good servers left in the general list, reverting ba
ck to the static list
Wed Sep 28 11:27:37 2011 <15359131722005124> Host extracted from serverlist is [10.182.5.5]
Wed Sep 28 11:27:37 2011 <15359131722005124> Host extracted from serverlist is [10.182.5.5]
Wed Sep 28 11:27:37 2011 <15359131722005124> Initializing lastIndex=0 for a list of length=2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 Apache 尝试发布到的 WebLogic。
当直接发布到同一 Weblogic 服务器时,您已确认此方法有效。
20 秒相当于默认的
KeepAliveSecs
,您可以尝试增加该值。您是否在插件中为
WLIOTimeoutSecs
设置了值。默认值为 300。定义插件等待 WebLogic Server 请求响应的时间(以秒为单位)。
但从您的日志来看,Apache 并没有在失败之前等待 300 秒。
同样,MaxPostSize 默认为 -1,只需检查您是否没有为此设置较低的值。
查看此列表中的其他插件参数
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/plugins/plugin_params.html#wp1143055
您可能还想修改
FileCaching< /code> POST 请求的元素
This is the WebLogic which Apache is trying to post to.
You have confirmed this works when directly posted to the same Weblogic server.
The 20 seconds mathces the default
KeepAliveSecs
which you can try to increase.Have you set a value in the plugin for
WLIOTimeoutSecs
.This defaults to 300. Defines the amount of time in seconds the plug-in waits for a response to a request from WebLogic Server.
But from your log it does not look like Apache is waiting for 300 seconds before failing.
Similarly
MaxPostSize
defaults to -1, just check that you have not set some low value for that.Check out the other plugin parameters on this list
http://download.oracle.com/docs/cd/E12840_01/wls/docs103/plugins/plugin_params.html#wp1143055
You might also want to tinker with the
FileCaching
element for POST requests