使用RestTemplate调用API遇连接超时问题求助(仅远程环境复现)
排查RestTemplate连接超时异常(仅远程环境出现)
异常信息
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://106.51.38.64:9999/SumadhuraGateway/employeeservice/thirdParty/getEmployeeOfMultiplePortal.spring":Connection timed out (Connection timed out); nested exception is java.net.ConnectException: Connection timed out (Connection timed out)
排查方向
- 网络连通性限制:在远程服务器上执行
ping 106.51.38.64或telnet 106.51.38.64 9999,确认是否能连通目标地址和端口。若不通,大概率是远程服务器所在网络的防火墙、安全组封禁了该端口,或是目标服务器的防火墙拦截了远程服务器的IP。 - 代理配置差异:本地环境可能配置了代理才能访问目标API,但远程服务器未同步配置。检查RestTemplate的代理设置,确认远程环境是否需要添加对应代理配置。
- 超时参数不一致:本地和远程环境的RestTemplate超时配置不同。远程环境的
connectTimeout或readTimeout设置过短,而目标API在远程链路下响应偏慢,导致超时。检查代码中SimpleClientHttpRequestFactory或HttpComponentsClientHttpRequestFactory的超时参数。 - 目标服务器负载问题:目标API服务器在远程访问链路中负载过高,无法及时响应请求。可在远程服务器用
curl命令直接调用API,验证是否能正常返回结果,或联系API提供方确认服务器状态。 - 网络链路异常:远程服务器到目标API的网络路由存在丢包、延迟过高的情况。执行
traceroute 106.51.38.64(Linux)或tracert 106.51.38.64(Windows)查看链路节点状态。
内容的提问来源于stack exchange,提问作者Venkatesh Bvr
相关产品推荐
相关产品推荐

