Apache 2.2 mod_proxy timeout

最近将公司的后台http系统从apache 2.0 升级到 apache 2.2 ,将原来的mod_jk也升级为mod_proxy_ajp 与tomcat 6连接。

但今天开发人员在执行一个执行时间超长的脚本,结果在通过浏览器访问执行时,apache 报告了 503 错误。查看了后台 apache 错误日志,发现了下面的错误信息:

[Thu Mar 20 15:44:47 2008] [error] ajp_read_header: ajp_ilink_receive failed
[Thu Mar 20 15:44:47 2008] [error] (120006)APR does not understand this error code: proxy: read response failed from (null) (x.x.x.x)

由查看tomcat的日志,发现该脚本仍在执行。

通过分析tomcat和apache的日志,发现从请求发起时到报503错误,刚好相差5分钟。因此我猜想apache 2.2.6的mod_proxy是不是默认就将timeout设置为5分钟。

接着我在ProxyPass后添加timeout=3600,再执行该请求,经过30分钟,脚本的结果终于顺利的在浏览器上显示出来。

但将timeout设置的这么长,必然会对系统造成不良的影响,降低了系统的并发性和及时响应率。
看来还需要采取别的方式来处理。

目前想到的最简单的解决方法就是将类似的执行时间长的请求单独放置到一个路径中,然后专门用ProxyPassMatch来对这类的URL进行设置,并配置一个比较长的timeout。这样就避免对一些正常的URL也设置过长的timeout。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值