有一个微服务(基于spring-boot)部署到关键的cloudfoundry。它创建异步任务来处理长请求。实现是newFixedThreadPool。
如何确定线程池的容量?
通常,我会查找CPU负载为80-90%。但关键的cloudfoundry CPU负载可以超过100%。据我所知,消耗CPU的时间除以前一个检查点的时间。我不知道200,400,800或更高的最大值是多少。我假设它与核心数有关。
我认为唯一的答案可以独立存在,也适用于未来的读者:您必须向您的云服务提供商询问。
含义:线程池的理想配置(可能还有许多其他配置可能性)是一件非常特别的事情。这取决于您的服务提供商实际的政策。这些政策随着时间而变化。今天有效的方法可能在6个月内不太理想。
从这个意义上说:不要指望互联网上的人可以告诉你什么最适合服务X在第Z天的要求Y.因此我的建议是不要在这里要求“通用”建议 - 但要仔细检查是什么当前服务提供商的帮助页面(或支持人员)必须说。
当然,您可以尝试简单地使用QVM调用,例如Runtime.getAvailableProcessors()
。但这实际上是棘手的事情,例如,请参阅Java专家时事通讯的问题135和220。