spring.cloud.nacos.discovery.watch-delay=1000 spring.cloud.loadbalancer.cache.ttl=3s
扩容两台实例后盯着网关访问日志看了十分钟,新机器一条请求都没有,注册中心里它们早就已经是健康状态了。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:客户端缓存了服务列表,刷新间隔默认三十秒起步,有的实现还叠一层本地缓存,注册中心变了本地也不马上跟,扩容的容量迟迟用不上。
「服务列表刷新间隔」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:把注册中心侧的推送和客户端拉取间隔都调短;确认负载均衡器有没有本地缓存,把 ttl 一起降下来;观察扩容之后多久流量能均摊到新加的实例上。
确认没问题再收工,扩容后三十秒内新实例就能分到流量,两边请求比例接近,不用等太久。
