dubbo消费端RPC调用默认超时时间为1000ms。
因为我有个服务需要调用支付宝第三包接口与使用FTP上传文件。在自己租的腾讯云服务器(乞丐版,运行速度有点慢)上正常来说这个服务都要1s以上才能返回。导致我消费端判断超时后就重复调用这个接口,导致服务端多次使用ftp上传文件后报错。
一开始看到服务端报错,一直以为是服务端代码问题,不断地在打日志debug,也没找到什么问题。在本地使用单元测试运行这个服务方法,也完全不会报错。 后面看日志才发现,消费端提示timeout and retries。 查看dubbo默认超时时间,才1秒。这时间对机器资源不丰富的情况下是极有可能出现1s以上才返回的。导致多次重复调用。而因为重复调用服务,ftp初始化和关闭交叉错乱,导致ftp也报错。所以一开始以为是服务端有bug,方向错误导致问题定位耗时很长。
问题总结:
1、没找准问题所在。服务端并无问题而是消费端重试调用导致。
2、没有在服务端进行幂等性设计。