Performance 根据可用内存限制HTTP请求

Performance 根据可用内存限制HTTP请求,performance,jakarta-ee,throttling,ddos,Performance,Jakarta Ee,Throttling,Ddos,我有一个RESTAPI,它将接收一个大的负载作为请求主体。API调用一个阻塞方法,处理每个请求需要2秒钟,然后返回200OK。我希望引入基于可用内存的节流,以便当可用内存低于阈值时,API返回429过多请求 当满足阈值条件时,我希望立即拒绝后续请求,甚至在将大量请求有效负载加载到应用程序内存之前。这也将为我提供一些针对拒绝服务攻击的保护 在JavaEE、Tomcat环境中,如果我使用过滤器检查可用内存,我知道完整的请求已经加载到内存中。然后添加check-inServletRequestList

我有一个RESTAPI,它将接收一个大的负载作为请求主体。API调用一个阻塞方法,处理每个请求需要2秒钟,然后返回
200OK
。我希望引入基于可用内存的节流,以便当可用内存低于阈值时,API返回
429过多请求

当满足阈值条件时,我希望立即拒绝后续请求,甚至在将大量请求有效负载加载到应用程序内存之前。这也将为我提供一些针对拒绝服务攻击的保护

在JavaEE、Tomcat环境中,如果我使用
过滤器检查可用内存,我知道完整的请求已经加载到内存中。然后添加check-in
ServletRequestListener.requestInitialized
方法是否更好,这样我甚至可以在应用程序收到请求之前拒绝请求

注意:我使用以下公式计算可用内存:


我打赌这只能通过连接到特定的应用服务器web请求处理管道来实现。你用哪一种?如果在Tomcat上安装阀门可能是正确的,但这是一个大胆的猜测。谢谢@NikosParaskevopoulos,是的,Tomcat
long presumableFreeMemory =
            Runtime.getRuntime().maxMemory()
            - Runtime.getRuntime().totalMemory()
            + Runtime.getRuntime().freeMemory();