[alibaba/nacos]项目使用dubbo 并使用nacos当注册中心,项目启动后,nacos一直报错 [com.alibaba.nacos.client.naming.updater] naming - [NA] failed to request java.net.SocketTimeoutException: connect timed out

2025-10-30 960 views
9

jdk:1.8 nacos:1.4.2 nacos 客户端:1.1.4 dubbo:2.7.15 操作系统:Mac

[ERROR] 2023-05-08T18:51:29,620 [com.alibaba.nacos.naming.beat.sender] naming - [NA] failed to request java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at sun.net.NetworkClient.doConnect(NetworkClient.java:175) at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) at sun.net.www.http.HttpClient.(HttpClient.java:242) at sun.net.www.http.HttpClient.New(HttpClient.java:339) at sun.net.www.http.HttpClient.New(HttpClient.java:357) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1340) at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1315) at com.alibaba.nacos.common.http.client.request.JdkHttpClientRequest.execute(JdkHttpClientRequest.java:106) at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:482) at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:427) at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:603) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:526) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:498) at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:433) at com.alibaba.nacos.client.naming.beat.BeatReactor$BeatTask.run(BeatReactor.java:167) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) at java.util.concurrent.FutureTask.run(FutureTask.java) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) [ERROR] 2023-05-08T18:51:30,619 [com.alibaba.nacos.client.naming.updater] naming - [NA] failed to request java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) at java.net.Socket.connect(Socket.java:606) at sun.net.NetworkClient.doConnect(NetworkClient.java:175) at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) at sun.net.www.http.HttpClient.(HttpClient.java:242) at sun.net.www.http.HttpClient.New(HttpClient.java:339) at sun.net.www.http.HttpClient.New(HttpClient.java:357) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1226) at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056) at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:990) at com.alibaba.nacos.common.http.client.request.JdkHttpClientRequest.execute(JdkHttpClientRequest.java:112) at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:482) at com.alibaba.nacos.common.http.client.NacosRestTemplate.exchangeForm(NacosRestTemplate.java:427) at com.alibaba.nacos.client.naming.net.NamingProxy.callServer(NamingProxy.java:603) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:526) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:498) at com.alibaba.nacos.client.naming.net.NamingProxy.reqApi(NamingProxy.java:493) at com.alibaba.nacos.client.naming.net.NamingProxy.queryList(NamingProxy.java:407) at com.alibaba.nacos.client.naming.core.HostReactor.updateService(HostReactor.java:382) at com.alibaba.nacos.client.naming.core.HostReactor$UpdateTask.run(HostReactor.java:464)

回答

3

从这个错误看有点笼统,可以将一些客户端连接nacos的配置信息贴出来,这样有助于分析。

1

java.net.SocketTimeoutException: connect timed out 网络问题,自查网络环境问题,或者看下tcp端口是否占满,应用和server端是否有GC,CPU或LOAD满。

8

我能否定位到 是发送的那个请求 导致的超时吗,这样方便我好定位问题,目前windows、linux服务器启动都没遇到这个问题,只有我得Mac 笔记本有问题。不知道是我本机哪里配置有影响 tcp端口没有被占用,只启动了一个服务提供方,gc cpu 都没有 本机配置

spring.cloud.nacos.config.file-extension=yml spring.cloud.nacos.config.group=${NACOS_GROUP:${spring.profiles.active:default}} spring.cloud.nacos.config.namespace=${NACOS_NAMESPACE:${spring.profiles.active:default}} spring.cloud.nacos.config.server-addr=${NACOS_PORT:20014} spring.cloud.nacos.discovery.group=${NACOS_GROUP:${spring.profiles.active:default}} spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE:${spring.profiles.active:default}} spring.cloud.nacos.discovery.server-addr=${NACOS_PORT:20014} spring.cloud.nacos.discovery.metadata.management.context-path=${server.servlet.context-path:}/a6r @Bean public ConfigService configService(NacosConfigProperties properties) throws NacosException { String username = Optional.ofNullable(properties.getUsername()).orElse("nacos"); String password = Optional.ofNullable(properties.getPassword()).orElse("nacos"); String namespace = Optional.ofNullable(properties.getNamespace()).orElse("default"); Properties props = new Properties(); props.setProperty("username", username); props.setProperty("password", password); props.setProperty("namespace", namespace); props.setProperty("serverAddr", "http://" + properties.getServerAddr()); return NacosFactory.createConfigService(props); } @PostConstruct public void init() throws Exception { instance = new Instance(); instance.setIp(nacosDiscoveryProperties.getIp()); instance.setPort(port); instance.setWeight(nacosDiscoveryProperties.getWeight()); instance.setClusterName(nacosDiscoveryProperties.getClusterName()); instance.setMetadata(nacosDiscoveryProperties.getMetadata());

    nettyServerName = nacosDiscoveryProperties.getService() + "-netty";
    namingService = nacosServiceManager.getNamingService(nacosDiscoveryProperties.getNacosProperties());
    namingService.registerInstance(nettyServerName, nacosDiscoveryProperties.getGroup(), instance);
    log.info("netty register 实例: {}:{} , 注册完成!", nettyServerName, port);
}
1

看客户端配置基本没有问题,确定一下20014这个端口是对应nacos的8848吗,另外21014是不是也被正确映射到9848?

6

服务是有注册上去,就是nacos的心跳检测 启动后 一直在输出,只有我这个mac笔记本有问题,别的电脑都没出现这个问题

0

心跳检测问题基本上就要看网络情况,是否有防火墙和出入栈规则等等,是有点不好确定,从报错看应该是客户端服务连接不到nacos的心跳端口所致,9848端口,对于你来说应该是21014,尝试把防火墙什么都关掉试试。