0 0

牛人给看看:大量客户端socket连接netty服务器时出现Connection refused: connect异常50

最近打算用netty写一个服务器,在压力测试时,模拟大量客户端socket连接netty服务器(1w的socket连接),结果有1/4的连接成功,3/4的连接失败,异常如下:

java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.$$YJP$$socketConnect(Native Method)
	at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:519)
	at com.towords.client.simulate.SocketClient.run(SocketClient.java:38)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)



大家帮忙看看。。。

测试客户端和服务器都是在本机测试,不是dns的问题,现在考虑有没有可能是下面的情况:
1.socket连接有限制,但是1w个连接不算多吧,而且异常信息是Connection refused,看起来像是服务端的问题

2.我机子的配置不高,有没有可能是机子的性能影响netty的boss线程限制客户端的连接呢?

或者是其他的情况??


我机子的配置:
Intel 奔腾 T2390 @1.86GHZ * 2
内存3G

测试服务器的JVM参数:(客户端的参数也基本一样)
-Xmx1200m
-Xms1200m
-XX:NewSize=1g
-XX:MaxNewSize=1g
-XX:SurvivorRatio=8
-XX:PermSize=30m
-XX:MaxPermSize=100m

问题补充:代码和官方的例子基本上一样

4个答案 按时间排序 按投票排序

0 0

确认下客户端与服务端是不是都是使用的NIO,如果都是NIO的话,会产生很多Selector,而Selector在window上的实现是基于连接的,一个selector会占用两个本地端口

2015年3月24日 20:09
0 0

我今天也碰到这个问题,200个并发socket连接是好使的,没有问题。
当超过300个,就会出现:

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at com.thunisoft.service.Service.query(Service.java:29)
at Test.getPayInfo(Test.java:19)
at Test.run(Test.java:33)

2015年1月21日 13:56
0 0

应该是服务器的配置问题,还有机器性能问题。

2014年3月23日 15:26
0 0

socket连接是同步的,netty是异步的,client连接上后,nettyServer接收数据,接收完后就将channel关闭了,client connection也就不存在了,就会refused,
怎么保证客户端不变,netty接收数据后保持channel还存活,是个问题,我也在研究!可以看一下channelFuture,可能只能用这个来处理,异步返回后回调

2014年3月11日 18:17

相关推荐

    c++客户端和java(Netty)服务器端tcp通讯

    客户端通常会执行以下步骤:创建socket,绑定IP和端口,连接到服务器,发送和接收数据,最后关闭socket。 在Java端,Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和...

    NettySocket同步数据获取实现

    在本文中,我们将深入探讨如何利用 Netty 实现Socket同步数据获取,同时涵盖心跳检测、客户端连接控制以及客户端登录等功能。 首先,让我们理解同步数据获取的基本概念。在传统的基于线程的模型中,同步意味着发送...

    spring boot 整合的netty 实现的socket的服务端和客户端

    这样,当我们启动应用时,服务器和客户端会自动启动并进行连接。 ```java @Configuration public class NettyConfig { @Bean public NettyServer nettyServer() { return new NettyServer(); // 实现启动服务器...

    socket长连接,netty服务器与android源码

    Socket长连接和Netty框架是网络编程中的重要概念,尤其在Android应用开发和服务器通信中扮演着关键角色。本文将深入探讨这两个主题,并通过提供的源码进行实例解析。 首先,让我们了解一下Socket。Socket是网络通信...

    Netty 实现scoket 主动推送数据到服务和服务端实现方式

    客户端发送16进制给服务端,并行实现socket通道活动状态和断开重新连接的功能, 监听接口是否存在数据,如果存在socket客户端发送给socket服务端的实现 随着物联网的发展,随之出现了各种传感器监测数据的实时发送,...

    C# Netty 客户端,服务器端包含接双向接收

    标题中的"C# Netty 客户端,服务器端包含双向接收"揭示了这是一个关于使用C#语言实现基于Netty框架的客户端和服务器端通信的项目。Netty是Java平台上的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可...

    从socket到netty

    客户端通过创建Socket实例连接到服务器的特定端口,然后通过输入/输出流进行数据传输。这个过程看似简单,但实际开发时涉及的错误处理、多线程、性能优化等问题往往需要开发者具备扎实的基础。 Netty,由JBOSS团队...

    Netty服务器与客户端

    Netty是Java领域的一款高性能、异步事件驱动的网络应用框架,主要用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨Netty的核心特性、工作原理以及如何构建一个简单的Netty服务器和客户端。 ...

    Netty实现Java服务端和C#客户端联通

    标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...

    Netty4长连接(服务端+客户端)

    Netty4是一款高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨Netty4在构建长连接、实现断开重连、心跳检测以及Msgpack编码解码方面的知识。 首先,我们要...

    java服务器端(Netty_Proto)和c++客户端tcp通讯.rar

    标题中的“java服务器端(Netty_Proto)和c++客户端tcp通讯”表明这是一个关于使用Java的Netty框架和Google的Protocol Buffers(ProtoBuf)进行TCP通信的项目。Netty是一个高性能、异步事件驱动的网络应用框架,常...

    Android-netty和socket通信的demo

    在“netty-socket-master”这个压缩包中,可能包含了服务器端和客户端的代码实现,包括Bootstrap的配置、ChannelHandler的定义、数据传输的逻辑等。通过对这些代码的学习和分析,开发者可以深入理解Netty在Android上...

    Python编写的简单的UDP和TCPSocket连接的客户端-服务器程序

    3. 连接服务器:使用`connect()`方法,传入服务器的IP地址和端口号。 4. 发送和接收数据:`sendall()`用于发送数据,`recv()`用于接收数据,注意TCP是流式协议,所以接收的数据可能需要按需分割。 5. 关闭连接:使用...

    netty与socket交互实例

    4. **Netty处理Client连接**:当Netty服务器接收到新的连接请求时,它会创建一个新的Channel实例,该实例将关联到接收到连接的Socket。然后,服务器可以使用ChannelHandlerContext发送消息到客户端。 5. **数据传输...

    基于netty编写的socket服务端

    Netty的核心在于其使用了非阻塞I/O(Non-blocking I/O,也称为NIO)模型,这使得它在处理大量并发连接时表现出色。NIO是一种I/O模型,与传统的阻塞I/O相比,它允许多个通道(channel)在单个线程中同时处理多个请求...

    Spring Boot 整合 Netty + WebSocket 实时消息推送

    这时,我们可以使用Netty作为WebSocket的后台服务器,利用其高效的非阻塞I/O模型来处理大量并发连接。Netty的WebSocketServerHandler可以自定义WebSocket的逻辑,如连接处理、消息解析等。 4. **多客户端通信**:在...

    Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例示例代码.rar

    Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。在本示例中,我们将深入探讨如何利用Netty实现多客户端连接并进行通信,具体以创建一个简单的聊天室群聊功能为例。...

    JavaNetty客户端与服务器

    Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的协议服务器和客户端。在Java领域,Netty因其高效性、灵活性和丰富的特性集而被广泛使用,尤其是在开发网络通信应用时。 标题"Java ...

    java应用netty服务端和客户端

    Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...

    基于netty+mqtt3.1.1+springboot+jdk8 实现的 mqtt 服务端跟客户端.zip

    这是一个基于Java技术栈,具体是Netty、MQTT 3.1.1协议、Spring Boot框架和JDK 8实现的MQTT服务器和客户端的项目。这个项目对于学习和实践物联网(IoT)通信以及Java后端开发具有很高的价值,尤其适合作为毕业设计的...

Global site tag (gtag.js) - Google Analytics