性能问答>如何限制spring应用的控制器的资源使用>
1回复

如何限制spring应用的控制器的资源使用



我有一个带有 3 个控制器的 Spring 应用,每个控制器都支持一些用例集,比如

SmallController - 支持 1 个用例

MediumController - 支持 3 个用例

LargeController - 支持 20 个用例

问题是,如果我最终收到大量对 SmallController 的请求,比如 1000 TPS,消耗了我 50-60% 的资源,它最终会耗尽我剩余的 23 个用例吗?如果是这样,有没有一种方法可以配置我的 Spring 应用程序,以便我发送到 SmallController 的请求激增不会分配超出某个预定义值的内存/线程等资源,以便 MediumController 和 LargeController 不会开始紧张?

基本上如果我有 100 Mbs 的内存并假设有 100 个线程池限制,能不能防止 SmallController 超过 50 Mbs 的内存并最多说 40 个线程,同时为 MediumController 和 LargeController 保证剩余资源?

如果根本没有现有的工具来控制资源的使用,有没有什么方法可以来构建?

904 阅读
请先登录,再评论

我的建议是引入“节流”(Rate Limit)。 你可以拥有自己的实现,也可以使用 Buket4j 之类的内容,例如:https://www.baeldung.com/spring-bucket4j。
如果你不喜欢污染控制器的源代码,你可以在 MVC 拦截器级别执行此操作(更干净的解决方案,在拦截器 preHandle 方法中处理它)。

7月前