【发布时间】:2026-01-26 12:40:01
【问题描述】:
我有一个 spring boot 应用程序,我在 openshift 集群的 docker 容器中运行。在稳定状态下,应用程序有 N 个实例(例如 N=5),请求被负载平衡到这 N 个实例。一切运行良好,响应时间短(约 5 毫秒,总吞吐量约 60k)。
每当我添加一个新实例时,响应时间都会短暂增加(最多约 70 毫秒),然后恢复正常。
有什么办法可以避免这种冷启动吗?我尝试通过在发送流量之前依次发出约 100 个 curl 调用来预热应用程序,但这没有帮助?
我需要更好的高并发预热脚本吗?有没有更好的方法来处理这个问题?
谢谢
【问题讨论】:
-
这听起来更像是一个 OpenShift 配置问题。
-
@chrylis 你能详细说明一下吗?
-
@Vikk,您也应该详细说明问题本身。你的应用程序是做什么的?我个人会尝试部署一个示例 Spring Boot 应用程序并使用它进行测试。如果发生同样的问题,那么它与 openshift 相关。
-
可能是 JVM/JIT 预热时间。我猜想延迟类加载 - 进行一堆 curl 调用是一个好的开始 - 或者调用关键代码大约 100 次的 JIT 优化是不够的(默认值:
-xx:CompileThreshold=10000afaik)。 或者,根据您的应用程序实际执行的操作,可能需要预热缓存 -
您使用的是预部署的镜像吗?每个实例的内存消耗是多少?你能增加每个节点分配的总内存并进行测试吗?
标签: java spring spring-boot openshift