Caused by: org.apache.dubbo.remoting.RemotingException: message can not send, because channel is

问题描述

我们用的是nacos注册中心,在本地启动服务的时候一直报服务连接超时,这个问题困扰了我好多天,反正不影响开发也就没太管。

Caused by: org.apache.dubbo.remoting.RemotingException: message can not send, because channel is closed . url:dubbo://10.0.112.160:27013/com.alibaba.cloud.dubbo.service.DubboMetadataService?anyhost=true&application=eq&bind.ip=10.0.112.160&bind.port=27013&check=false&codec=dubbo&deprecated=false&dubbo=2.0.2&dynamic=true&generic=true&group=dashboard&heartbeat=60000&interface=com.alibaba.cloud.dubbo.service.DubboMetadataService&methods=getAllServiceKeys,getServiceRestMetadata,getExportedURLs,getAllExportedURLs&pid=9982&qos.enable=false&register.ip=10.0.41.16&release=2.7.8&remote.application=dashboard&revision=2.2.5.RELEASE&side=consumer&sticky=false&timestamp=1647507950228&version=1.0.0
	at org.apache.dubbo.remoting.transport.AbstractClient.send(AbstractClient.java:176)
	at org.apache.dubbo.remoting.transport.AbstractPeer.send(AbstractPeer.java:53)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeChannel.request(HeaderExchangeChannel.java:135)
	at org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeClient.request(HeaderExchangeClient.java:95)
	at org.apache.dubbo.rpc.protocol.dubbo.ReferenceCountExchangeClient.request(ReferenceCountExchangeClient.java:91)
	at org.apache.dubbo.rpc.protocol.dubbo.DubboInvoker.doInvoke(DubboInvoker.java:105)
	at org.apache.dubbo.rpc.protocol.AbstractInvoker.invoke(AbstractInvoker.java:163)
	at org.apache.dubbo.rpc.protocol.AsyncToSyncInvoker.invoke(AsyncToSyncInvoker.java:52)
	at org.apache.dubbo.rpc.listener.ListenerInvokerWrapper.invoke(ListenerInvokerWrapper.java:78)
	at org.apache.dubbo.rpc.filter.GenericImplFilter.invoke(GenericImplFilter.java:125)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
	at org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:89)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
	at org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:51)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
	at cn.com.smart.log.trace.DubboTraceFilter.invoke(DubboTraceFilter.java:34)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
	at org.apache.dubbo.rpc.filter.ConsumerContextFilter.invoke(ConsumerContextFilter.java:69)
	at org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:83)
	at org.apache.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:56)
	at org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:82)
	... 35 common frames omitted

原因分析:

我在日志中突然发现了这么一条记录:

[eq:10.0.41.16:7012] 2022-04-19 18:55:41.822 WARN 9982 [] [main] a.c.d.m.r.DubboServiceMetadataRepository Current application will subscribe all services(size:31) in registry, a lot of memory and CPU cycles may be used, thus it's strongly recommend you using the externalized property 'dubbo.cloud.subscribed-services' to specify the services

报错原因: 这是一个警告.提示当前应用订阅服务是缺省配置.会占用过多资源

解决方案:

dubbo:
  cloud:
    subscribed-services: 'service1,service2'#配置订阅服务多个服务用,隔开,不配置默认订阅注册中心所有服务

你可能感兴趣的:(java,spring,后端)