java -jar app.jar --apm.init.async=true --apm.config.timeout=500ms
time java -jar app.jar --spring.main.web-application-type=none

接入监控 SDK 后,Spring Boot 启动时间从 11 秒变成 14 秒,启动日志里 3.2 秒卡在 collector init。配置中心超时是 3 秒,SDK 初始化正好等满。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:SDK 的 init 在构造函数里同步拉远端配置,超时才降级用本地默认值。这段时间主线程什么都做不了,健康检查也跟着推迟。配置中心抖动时启动时间更长,容器直接被 readinessProbe 判失败重启。

这次卡住的地方就在「SDK 初始化阻塞」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

处理上按这个顺序:把 SDK 初始化挪到异步线程 别放在主流程里;设置本地默认配置 远端拉取失败也立即返回;把超时从 3 秒降到 500 毫秒;用冷启动连续跑三次 对比启动耗时。

确认没问题再收工,冷启动时间回到 11 秒左右,配置中心不可用时也能正常起来。

作者 9823189