0%

Apollo 长轮询超时错误

最近线上碰到一个线上的go程序Apollo报错,请求apollo的时候超时,记录一下错误的原因。

错误信息

1
Do Request fail![err:Get https://apollo.merak.xxx.com/notifications/v2?appId=xx.service-xx&cluster=default&notifications=%5B%7B%22namespaceName%22%3A%22default.json%22%2C%22notificationId%22%xx%7D%5D: net/http: request canceled (Client.Timeout exceeded while awaiting headers)], request[], resp[<nil>]

Apollo 长轮询机制

了解了一下,是因为Apollo的长轮询机制导致的。

Apollo portal 更新配置后,进行轮询的客户端获取更新通知,然后再调用接口获取最新配置。不仅仅只有轮询,还有定时更新(默认 5 分钟一次)。目的就是让客户端能够稳定的获取到最新的配置。

根本原因

运维修改了相关服务的请求超时时间

解决办法

将相关服务的超时时间修改,大于Apollo长轮询时间。