把并发数从 20 改成 2 导致任务全堆积,5 分钟后回滚到 20,控制台显示已是 20。部分实例的线程池仍然是 2,日志里 poolSize=2 一直持续到重启。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,回滚只是把配置中心的值改回去,实例收到通知后因为本地版本号判断写反,认为新版本比本地旧,直接忽略了这次推送。线程池参数又只在启动时初始化一次。
「配置回滚不生效」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
curl 'http://config:8080/configs?dataId=task.yaml' | grep poolSize # 逐台核对实际生效值 curl -X POST http://app:9000/actuator/refresh
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,版本比较改成按时间戳 不只比数字大小;回滚后主动查一遍各实例的实际值 不要只看控制台;线程池这类对象参数支持重建 不要只初始化一次。
最后用这个标准收尾,回滚后 1 分钟内所有实例线程池回到 20,任务堆积在 3 分钟内消化完。
