我有一个公开 REST 的 Java 应用程序。
我有一个主人和两个奴隶。 (jboss7.1.1)
Apache-modcluster 负责负载平衡。
我的应用程序中维护着队列,当没有消费者时,队列有时会被填满。因此,我得到了 OutOfMemory 并且从属节点出现故障。
apache modcluster 中是否有任何配置来检查负载并阻止传入请求,尽管只是路由?
或者有什么不同的建议吗?
最佳答案
据我所知,您只能根据负载路由请求(使用 LoadMetric),而不能阻止它们
我建议你应该设计你的API,当你的队列已满并且jboss节点无法服务请求时返回不同的响应代码(可能是509或503),然后你可以指示API使用者在之后重试如果遇到这些响应之一,则超时
可以使用 mod_security 之类的东西来“速率限制”apache(请参阅: https://johnleach.co.uk/words/1073/rate-limiting-with-apache-and-mod-security ),但是我认为从应用程序代码中控制它会更好
关于java - ModCluster 配置在负载已满时丢弃请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33910586/