我有一台 Apache 服务器,它使用 mod_wsgi 为 django 应用程序提供服务。我想知道是否有一种简单的方法可以根据机器的负载在 apache 级别限制请求。
理想情况下,我想要一个 Apache 模块,如果负载低于某个数字,则一切正常。但是,如果负载高于某个数字,则 X% 的 IP 地址将在 Y 分钟内提供静态 html 页面。有这样的软件吗?
我们正在寻找一种“穷人的节流系统”。我们可以快速轻松地投入使用。基于机器负载的节流是好的,因为这意味着事情最终会恢复正常。
我们的 Web 应用程序进行了大量处理,因此限制带宽的因素不会影响这一点,我们想要“限制”的不是带宽,而是请求。理想情况下,我们希望一些现有请求(即基于 IP 地址的请求)能够持续一段时间(以便它们能够完成其工作)。
答案1
我从未亲自设置过,我知道这不是您正在寻找的(即它不是 Apache 模块),但有一个名为流量控制的工具。鉴于 tc 是通过简单的命令行调用的,您似乎可以将其集成到您自己的脚本中,并根据 top 的负载输出或您监控负载的其他任何内容来启动您想要的节流。
此页面上有一个示例脚本:http://wiki.openvz.org/Traffic_shaping_with_tc