【发布时间】:2021-09-08 07:25:24
【问题描述】:
我有一个带有 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 的剩余资源?
如果根本没有现有的工具来控制资源的使用,有人可以提出一种可以探索的方法来开始构建吗?
【问题讨论】:
-
相关:stackoverflow.com/q/61921122/5515060。本质上,为每个控制器创建一个具有不同数量可用线程的线程池。然后只需将请求分派到线程池
标签: java spring spring-mvc jvm threadpool