我有一个Restful API,用于通过POST将一些文件从远程节点上传到服务器
如果我关闭服务器上传文件会远程排队这样当服务器重新上线时可能会有大量的请求进来这会导致服务器关闭
应用程序托管在具有Apache前端的JBoss服务器集群上
所以我的问题是:有没有任何内置/有效的解决方案来限制并发请求的数量?在Apache/JBoss/RestEasy - Application级别
此时,调用的API必须返回一个200(成功),否则上载将停留在远程队列中,并将在固定的时间段后重试
我正在考虑只是在数据库中存储当前请求数并设置阈值,如果超过阈值则拒绝请求,以便远程节点在一段时间后再次尝试,但我希望有一个更优雅的解决方案
如果您使用mod_proxy通过apache访问REST应用程序,也许您可以尝试限制后端并发连接的最大数量,如:
ProxyPass /application/rest http://localhost:8080/application/rest max=10
ProxyPass /application http://localhost:8080/application
这样你应该限制连接到/application/rest的最大数量为10。摘自apache doc http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
请注意,这只适用于在MPM模式下编译的Apache。如果Apache编译为预分叉模式,它会为每个请求生成一个新进程,并且"max"属性只影响每个进程,因此没有实际效果。