linux – 如何配置mod_proxy_balancer以在高负载下正常失败

我们有一个系统,在多个tomcats前面有一个Apache实例.然后这些tomcats连接到各种数据库.我们使用mod_proxy_balancer来平衡负载到tomcat.

目前我们每秒接收100个请求,Apache服务器上的负载非常低,但是由于数据库在tomcats上的大量操作,负载大约有25%(我估计他们可以处理).

在几周内发生了一件事,我们估计我们的请求会大幅增加,可能会增加10倍.

我正在做我能做的一切,减少我们的tomcats的负担,但我知道我们将耗尽容量,所以我想优雅地失败.我的意思是,我不是试图处理所有超时的太多连接,而是希望Apache以某种方式监视平均响应时间,并且一旦Tomcat的响应时间超过某个阈值,我想要一个错误页面显示.

这意味着幸运的用户仍然可以快速呈现页面,而那些不幸的用户快速获得错误页面.而不是每个人都等待他们的页面太长,最终每个人都超时,数据库被淹没了从未使用过的查询.

希望这是有道理的,所以我一直在寻找有关如何实现这一目标的建议.

谢谢

解决方法

我称之为“对不起服务器”.如果您使用的是Apache 2.2,则可以将另一台主机添加到LB池作为热备用,当实际的应用服务器达到容量时,您的平衡器会将请求定向到“对不起服务器”,直到应用服务器再次可用.这是一个粗略的想法:
<Proxy balancer://yourapp>
    BalancerMember http://10.0.0.1:8080 retry=5 max=50
    BalancerMember http://10.0.0.2:8080 retry=5 max=50
    BalancerMember http://10.0.0.3:8080 retry=5 max=50
    BalancerMember http://10.0.0.4:8080 retry=5 max=50
    # the hot standby on server2
    BalancerMember http://10.0.0.5:80 status=+H
</Proxy>
<Location /app>
    ProxyPass           balancer://yourapp
</Location>

实际上,你可以在你的负载均衡器机器上设置一个额外的虚拟主机,让它服务于“对不起服务器”页面本身.希望有所帮助:)

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...