关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer.
最近在做一个项目,需要生成9000个号码,为了方便系统分离合并,采用dubbo实现,在本地测试生成时什么问题都没有,顺顺利利的实现生成并显示状态,可是每次调用dubbo服务时就会产生异常,每当想要生成200个号码的时候,它会生成400个或者600,很显然它是执行了三次,也就是服务调了三次,看后台总是看到一个tried 3 times……这也正是产生三倍数量的原因,后来仔细看了后台异常说的是……timeout……,那么自然想到是服务超时,个人觉得是在调用一次服务时,后台需要执行的时间太长,超出了服务的响应超时时间(response timeout),所以它会再次尝试调用服务,可能是dubbo服务的设置,最多尝试三次,所以就会产生调用三次服务,产生三倍号码的结果,那么这样就有方向了,修改dubbo服务的超时时间timeout,网上找设置dubbo timeout的方法,http://wenku.baidu.com/view/5c6854287375a417866f8f61,这里边仔细介绍了设置超时时间的方法,还进行了详细分析,开始设置的timeout=10000,少量的可以正常完成,可是数大点就不行了,后来有同事说可以设置timeout=0就没有超时时间,但是测试过,不可以,因为默认的是500,你设置了0,就是不管怎样都是超时了,这个和其他框架的配置不太一样,后来在服务提供端设置timeout=1200000,ok!完胜!虽然有点大,但是也没影响。
详细设置和说明可以查看百度文库的资料,dubbo官方配置指南.doc,
<dubbo:service interface="com.XXXX.XXXXX.CardService" ref="cardService" timeout="1200000"/>
最近在做一个项目,需要生成9000个号码,为了方便系统分离合并,采用dubbo实现,在本地测试生成时什么问题都没有,顺顺利利的实现生成并显示状态,可是每次调用dubbo服务时就会产生异常,每当想要生成200个号码的时候,它会生成400个或者600,很显然它是执行了三次,也就是服务调了三次,看后台总是看到一个tried 3 times……这也正是产生三倍数量的原因,后来仔细看了后台异常说的是……timeout……,那么自然想到是服务超时,个人觉得是在调用一次服务时,后台需要执行的时间太长,超出了服务的响应超时时间(response timeout),所以它会再次尝试调用服务,可能是dubbo服务的设置,最多尝试三次,所以就会产生调用三次服务,产生三倍号码的结果,那么这样就有方向了,修改dubbo服务的超时时间timeout,网上找设置dubbo timeout的方法,http://wenku.baidu.com/view/5c6854287375a417866f8f61,这里边仔细介绍了设置超时时间的方法,还进行了详细分析,开始设置的timeout=10000,少量的可以正常完成,可是数大点就不行了,后来有同事说可以设置timeout=0就没有超时时间,但是测试过,不可以,因为默认的是500,你设置了0,就是不管怎样都是超时了,这个和其他框架的配置不太一样,后来在服务提供端设置timeout=1200000,ok!完胜!虽然有点大,但是也没影响。
详细设置和说明可以查看百度文库的资料,dubbo官方配置指南.doc,
<dubbo:service interface="com.XXXX.XXXXX.CardService" ref="cardService" timeout="1200000"/>