如何限制 Tomcat 应用程序的命中次数?

如何限制 Tomcat 应用程序的命中次数?

我们有一个 Java 应用程序,由 Apache 2.2 + mod_proxy_ajp + Tomcat 6 提供服务,它是一个 REST API,最终用户往往喜欢尽可能快地完全使用它。我希望能够限制每秒的点击次数,最好是按用户/IP 限制。就像 Amazon、Twitter 等限制其 API 的点击次数一样。

  1. 最好在 Apache 或 Tomcat 本身中,但在操作系统(Fedora)中也可以,虽然我不想影响同一台机器上的其他 Tomcat 应用程序(所以仅在端口 80 上执行 iptables 并不是最好的解决方案)
  2. 我不想限制带宽,此应用程序每次点击不会产生超过 1k 的输出,仅为应用程序的原始点击次数,以防止 Tomcat 不堪重负
  3. 我在 Amazon AWS EC2 上运行,因此每个盒子不需要多个 IP 或其他复杂的网络解决方案
  4. 我愿意接受可以告诉开发人员放入其代码中的解决方案,但希望它是我可以从管理员的角度控制的东西(比如我可以使用他们的 log4j 配置文件更改日志级别)。

似乎所有用于执行此类操作的 Apache 模块都被废弃了,并且与 Apache 2.2 不兼容。有什么想法吗?

答案1

看一下 mod_limitipconn2,它可能就是你想要的:

http://dominia.org/djao/limitipconn2.html

这将允许您将其限制为每个 IP 一个连接,从而有效地将用户的浏览器转变为同步连接,而不是默认打开通常的 4-6 个连接(想想 Firefox)。

相关内容