我有以下业务场景:
- apache http 服务器通过 ajp 将客户端请求负载平衡到应用服务器
- 所有资源密集型工作都是在应用服务器上针对每个请求完成的
- 请求是基于应用程序用户的,但是没有简单的方法来限制用户的速度。
- 大多数用户可能来自一个 IP,少数用户可能来自几个 IP。因此,为了解决这个问题,我假设每个用户都来自一个 IP。
- 目的是防止任何单个用户的请求淹没服务器。
我目前正在使用 iptables 速率限制来限制每个 ip 的最大并发连接数。
有没有更好的方法?
答案1
也许你最好的机会是http://bloke.org/apache/limit-apache-requests-per-ip-address-with-mod_limitipconn/
另外,由于您使用的是 ajp,我假设您是前端 tomcat。我提供的另一种帮助是使用 Async Servlet -https://plumbr.eu/blog/how-to-use-asynchronous-servlets-to-improve-performance