HttpClient连接池耗尽引发雪崩问题
问题描述:
多个HTTP接口共用一个HttpClient连接池,有商品HTTP服务,库存HTTP服务还有其他的HTTP服务,由于并发流量过大,其中一个接口系统发生宕机,导致请求到该问题接口的所有HttpClient连接都访问超时,直到访问超时时,才释放HttpClient连接,导致连接池瞬间被耗尽,发生雪崩效应,影响了正常HTTP请求的调用,因为一个问题接口影响了整个系统的调用。
解决方案
在获取HttpClient连接之前,维护一个依赖HTTP接口的调用开关状态,首先判断下目标HTTP接口的服务状态,如果状态可用,在获取连接执行调用,如果不可用状态,直接执行降级逻辑;
每次执行HTTP接口完成后,根据接口返回状态在同步更新依赖HTTP接口开关状态,根据阈值判断开关是否需要打开。
网友评论