如何确定关键 cloudfoundry 中微服务线程池的容量?
How to determine capacity for threadpool for microservice in pivotal cloudfoundry?
有一个微服务(spring-基于启动)部署到关键的 cloudfoundry。它创建异步任务来处理长请求。实现是newFixedThreadPool.
如何确定线程池的容量?
通常,我会寻找 CPU 负载为 80-90%。但是pivotal cloudfoundry CPU负载可以超过100%。据我了解,这是消耗 CPU 的时间除以前一个检查点的时间。而且我不知道200、400、800或更多的最大值是多少。我认为它与核心数量有关。
我认为唯一可以站在这里,也适用于未来读者的答案:您将不得不询问您的云服务提供商。
意思:线程池的理想配置(可能还有许多其他配置可能性)是一件非常特殊的事情。这取决于您的服务提供商制定的实际政策。这些政策会随着时间而改变。今天有效的方法在 6 个月后可能达不到最佳效果。
从这个意义上说:不要指望互联网上的人可以在 Z 日告诉您什么最适合服务 X 和 Y 的要求。因此我的建议是不要在这里征求 "generic" 建议- 但要仔细检查您当前服务提供商的帮助页面(或支持人员)必须说什么。
当然,您可以尝试简单地使用Runtime.getAvailableProcessors()
等JVM调用。但这实际上是一件棘手的事情,例如,请参阅 Java 专家通讯的问题 135 and 220。
有一个微服务(spring-基于启动)部署到关键的 cloudfoundry。它创建异步任务来处理长请求。实现是newFixedThreadPool.
如何确定线程池的容量?
通常,我会寻找 CPU 负载为 80-90%。但是pivotal cloudfoundry CPU负载可以超过100%。据我了解,这是消耗 CPU 的时间除以前一个检查点的时间。而且我不知道200、400、800或更多的最大值是多少。我认为它与核心数量有关。
我认为唯一可以站在这里,也适用于未来读者的答案:您将不得不询问您的云服务提供商。
意思:线程池的理想配置(可能还有许多其他配置可能性)是一件非常特殊的事情。这取决于您的服务提供商制定的实际政策。这些政策会随着时间而改变。今天有效的方法在 6 个月后可能达不到最佳效果。
从这个意义上说:不要指望互联网上的人可以在 Z 日告诉您什么最适合服务 X 和 Y 的要求。因此我的建议是不要在这里征求 "generic" 建议- 但要仔细检查您当前服务提供商的帮助页面(或支持人员)必须说什么。
当然,您可以尝试简单地使用Runtime.getAvailableProcessors()
等JVM调用。但这实际上是一件棘手的事情,例如,请参阅 Java 专家通讯的问题 135 and 220。