dubbo连接超时:org.apache.dubbo.rpc.RpcException: Invoke remote method timeout.

这篇博客主要讨论了在使用Dubbo时遇到的远程方法调用超时问题。错误日志显示,请求在等待服务器响应时超时,客户端和服务器端的延迟时间超过了预设的1000ms超时限制。解决方法是在消费者端和提供者端的配置中增加超时时间,例如将timeout设置为50000ms,确保请求有足够的时间完成。通过这种方式,可以避免因超时导致的服务不稳定。
摘要由CSDN通过智能技术生成

        报错信息:

org.apache.dubbo.rpc.RpcException: Invoke remote method timeout. method: getEasybuyUserListByMap, provider: dubbo://192.168.52.1:20880/com.buy.service.easybuyUser.EasybuyUserService?anyhost=true&application=buy-user-consumer&bean.name=ServiceBean:com.buy.service.easybuyUser.EasybuyUserService&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.buy.service.easybuyUser.EasybuyUserService&lazy=false&methods=queryEasybuyUserPageByMap,getEasybuyUserListByMap,itriptxModifyEasybuyUser,itriptxAddEasybuyUser,getEasybuyUserCountByMap,getEasybuyUserById,itriptxDeleteEasybuyUserById&pid=19876&qos.enable=false&register=true&register.ip=192.168.52.1&release=2.7.3&remote.application=buy-user-provider&revision=1.0-SNAPSHOT&side=consumer&sticky=false&timestamp=1630382237309, cause: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2021-08-31 11:57:42.790, end time: 2021-08-31 11:57:43.812, client elapsed: 75 ms, server elapsed: 947 ms, timeout: 1000 ms, request: Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=getEasybuyUserListByMap, parameterTypes=[interface java.util.Map], arguments=[{mobile=15239908002}], attachments={path=com.buy.service.easybuyUser.EasybuyUserService, interface=com.buy.service.easybuyUser.EasybuyUserService, version=0.0.0}]], channel: /192.168.52.1:55674 -> /192.168.52.1:20880
	at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:63) ~[dubbo-2.7.3.jar:2.7.3]
	Caused by: java.util.concurrent.ExecutionException: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2021-08-31 11:57:42.790, end time: 2021-08-31 11:57:43.812, client elapsed: 75 ms, server elapsed: 947 ms, timeout: 1000 ms, request: Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=getEasybuyUserListByMap, parameterTypes=[interface java.util.Map], arguments=[{mobile=15239908002}], attachments={path=com.buy.service.easybuyUser.EasybuyUserService, interface=com.buy.service.easybuyUser.EasybuyUserService, version=0.0.0}]], channel: /192.168.52.1:55674 -> /192.168.52.1:20880
	at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357) ~[na:1.8.0_152]
	at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1915) ~[na:1.8.0_152]
	at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:56) ~[dubbo-2.7.3.jar:2.7.3]
	... 72 common frames omitted
Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer. start time: 2021-08-31 11:57:42.790, end time: 2021-08-31 11:57:43.812, client elapsed: 75 ms, server elapsed: 947 ms, timeout: 1000 ms, request: Request [id=0, version=2.0.2, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=getEasybuyUserListByMap, parameterTypes=[interface java.util.Map], arguments=[{mobile=15239908002}], attachments={path=com.buy.service.easybuyUser.EasybuyUserService, interface=com.buy.service.easybuyUser.EasybuyUserService, version=0.0.0}]], channel: /192.168.52.1:55674 -> /192.168.52.1:20880
	at org.apache.dubbo.remoting.exchange.support.DefaultFuture.doReceived(DefaultFuture.java:189) ~[dubbo-2.7.3.jar:2.7.3]
	at org.apache.dubbo.remoting.exchange.support.DefaultFuture.received(DefaultFuture.java:153) ~[dubbo-2.7.3.jar:2.7.3]
	at org.apache.dubbo.remoting.exchange.support.DefaultFuture$TimeoutCheckTask.run(DefaultFuture.java:252) ~[dubbo-2.7.3.jar:2.7.3]
	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:648) ~[dubbo-2.7.3.jar:2.7.3]
	at org.apache.dubbo.common.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:727) ~[dubbo-2.7.3.jar:2.7.3]
	at org.apache.dubbo.common.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:449) ~[dubbo-2.7.3.jar:2.7.3]
	... 1 common frames omitted

        导致原因:

        看到错误信息日志,可以知道是超时错误,再往下看,看到服务端即消费者端通道已经关闭。此时我们需要设置一个超时时间。

        消费者端:

dubbo:
  application:
    name: buy-user-consumer
  registry:
    address: zookeeper://127.0.0.1:2181
  consumer:
    timeout: 50000

        提供者端:

dubbo:
  application:
    name: buy-user-provider
  registry:
    address: zookeeper://127.0.0.1:2181
  protocol:
    port: 20880
  provider:
    timeout: 50000

        这样就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦梦~~

你的鼓励是对我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值