0

我有一个公开 REST 的 Java 应用程序。

我有一个主人和两个奴隶。(jboss7.1.1)

Apache-modcluster 负责负载平衡。

我在我的应用程序中维护了队列,当没有消费者时,这些队列有时会被填满。因此我得到 OutOfMemory 并且从节点出现故障。

apache modcluster 中是否有任何配置来检查负载并阻止传入请求,尽管只是路由?

或者有什么不同的建议?

4

1 回答 1

1

据我所知,您只能根据负载(使用 LoadMetric)路由请求,而不是阻止它们

我建议您设计 API 以在队列已满且 jboss 节点无法为请求提供服务时返回不同的响应代码(可能是 509 或 503),然后您可以指示 API 使用者在超时后重试,如果他们遇到这些反应之一

可以使用 mod_security 之类的东西对 apache 进行“速率限制”(参见:https ://johnleach.co.uk/words/1073/rate-limiting-with-apache-and-mod-security ),但是我认为从您的应用程序代码中控制它会更好

于 2015-11-25T15:34:04.860 回答