请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

RestTemplate通信问题

老师您好我在工作中遇到了一个RestTemplate通信的问题尝试了一些方法后始终无法定位到具体问题。
我的服务和一个第三方的服务同时部署在客户的机房中我的服务是基于docker部署的。对方请求我的服务没有任何问题我在程序中使用RestTemplate请求对方的服务POST请求参数十分简单时经常会在对方服务的使用量很高的时候导致connect timeout。
我尝试过使用默认的RestTemplate配置 以及基于Apache HttpClient定制化的RestTemplate都会出现连接超时。
我在宿主机通过定时每分钟跑脚本 ping一个包 telnet以及curl各一次 都正常。
在docker中也每分钟ping一个包 curl一次 也都正常但是RestTemplate还是会连接超时每次出错时tcpdump发现三次握手的第一次握不上。
后来我在程序中设置定时每分钟RestTemplate请求这个服务后正常的业务再也没有出现过connect timeout一直没弄明白是什么原因造成的。
与第三方联调很不方便也感觉是我方的问题。
想咨询一下老师有没有一些其他的思路谢谢老师

正在回答 回答被采纳积分+3

1回答

大目 2020-04-13 18:01:44

connect timeout
一般是由于网络原因导致的。
建议进入容器内部去telnet或ping测试网络有无问题。一定要进容器内。因为容器和本机使用的不是一个网络,而只是一个桥接关系。
如果确认网络能通,用curl发送请求,看能否成功,如果也能成功,那看响应时间是不是非常长,如果非常长,那调整resttemplate的超时时间即可。

0 回复 有任何疑惑可以回复我~
  • 提问者 醒着长眠 #1
    嗯嗯 在宿主机和容器内都进行了持续的ping/telenet/curl测试 curl请求全部都能成功并且响应时间很短 restTemplate成功的请求响应时间也很短 并且同一时刻curl成功而restTemplate可能失败
    回复 有任何疑惑可以回复我~ 2020-04-14 16:04:00
  • 大目 回复 提问者 醒着长眠 #2
    超时时间设长呢?还会出现超时吗?设置文档:http://www.itmuch.com/spring-cloud-sum/spring-cloud-timeout/
    回复 有任何疑惑可以回复我~ 2020-04-14 16:33:58
  • 提问者 醒着长眠 回复 大目 #3
    嗯嗯 增大超时时间还是会超时
    回复 有任何疑惑可以回复我~ 2020-04-15 23:55:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信