![如何限制 Tomcat 应用程序的命中次数?](https://linux22.com/image/523559/%E5%A6%82%E4%BD%95%E9%99%90%E5%88%B6%20Tomcat%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%91%BD%E4%B8%AD%E6%AC%A1%E6%95%B0%EF%BC%9F.png)
我们有一个 Java 应用程序,由 Apache 2.2 + mod_proxy_ajp + Tomcat 6 提供服务,它是一个 REST API,最终用户往往喜欢尽可能快地完全使用它。我希望能够限制每秒的点击次数,最好是按用户/IP 限制。就像 Amazon、Twitter 等限制其 API 的点击次数一样。
- 最好在 Apache 或 Tomcat 本身中,但在操作系统(Fedora)中也可以,虽然我不想影响同一台机器上的其他 Tomcat 应用程序(所以仅在端口 80 上执行 iptables 并不是最好的解决方案)
- 我不想限制带宽,此应用程序每次点击不会产生超过 1k 的输出,仅为应用程序的原始点击次数,以防止 Tomcat 不堪重负
- 我在 Amazon AWS EC2 上运行,因此每个盒子不需要多个 IP 或其他复杂的网络解决方案
- 我愿意接受可以告诉开发人员放入其代码中的解决方案,但希望它是我可以从管理员的角度控制的东西(比如我可以使用他们的 log4j 配置文件更改日志级别)。
似乎所有用于执行此类操作的 Apache 模块都被废弃了,并且与 Apache 2.2 不兼容。有什么想法吗?
答案1
看一下 mod_limitipconn2,它可能就是你想要的:
http://dominia.org/djao/limitipconn2.html
这将允许您将其限制为每个 IP 一个连接,从而有效地将用户的浏览器转变为同步连接,而不是默认打开通常的 4-6 个连接(想想 Firefox)。