gpt4 book ai didi

Spring Boot Actuator 在单独的线程池中运行

转载 作者:行者123 更新时间:2023-12-03 15:47:28 28 4
gpt4 key购买 nike

是否可以处理像 health 这样的执行器请求在与“主”应用程序分开的线程池中?

我为什么要问?
我有一个应用程序,它有时可能会用完所有可用线程,并且 Kubernetes 运行状况检查由于线程不可用来计算运行状况端点请求而失败。

我想确保无论应用程序承受多少负载,都会处理每个运行状况请求。

我正在考虑为执行器定义一个单独的线程池来操作,但我不知道如何做到这一点。

最佳答案

在 Kubernetes 中运行时,我们的一些应用程序也遇到了类似的问题。我们研究了不同的创建方式 multiple tomcat connectorschanging the spring management port得到想要的效果,但从来没有完全得到它。

最后,我们解决了问题的根源,即 Pod 内的资源匮乏。我们发现遇到健康检查超时的应用程序有很多用于各种 3rd 方线程池的额外线程。在某些情况下,我们有接近 500 个线程的应用程序,因此即使在我们认为中等负载的情况下,tomcat 池也会饿死并且无法处理新请求。

FWIW,我们发现的最大罪魁祸首是 CPU request 的影响在 pod 和 JDK 上。当我们没有设置任何请求时,JDK 会在查询处理器数量时看到节点上的每个 CPU。我们发现 Java 生态系统中有很多地方使用处理器数量来初始化不同的线程池。

在我们的例子中,每个节点有 36 个处理器,我们发现大约 10-12 个线程池使用这个数字来确定大小……不难看出应用程序如何快速增长到 500 个线程。

关于Spring Boot Actuator 在单独的线程池中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58921470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com