-
牛人给看看:大量客户端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
问题补充:代码和官方的例子基本上一样2012年7月30日 10:33
4个答案 按时间排序 按投票排序
-
确认下客户端与服务端是不是都是使用的NIO,如果都是NIO的话,会产生很多Selector,而Selector在window上的实现是基于连接的,一个selector会占用两个本地端口
2015年3月24日 20:09
-
我今天也碰到这个问题,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
-
socket连接是同步的,netty是异步的,client连接上后,nettyServer接收数据,接收完后就将channel关闭了,client connection也就不存在了,就会refused,
怎么保证客户端不变,netty接收数据后保持channel还存活,是个问题,我也在研究!可以看一下channelFuture,可能只能用这个来处理,异步返回后回调2014年3月11日 18:17
相关推荐
客户端通常会执行以下步骤:创建socket,绑定IP和端口,连接到服务器,发送和接收数据,最后关闭socket。 在Java端,Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和...
在本文中,我们将深入探讨如何利用 Netty 实现Socket同步数据获取,同时涵盖心跳检测、客户端连接控制以及客户端登录等功能。 首先,让我们理解同步数据获取的基本概念。在传统的基于线程的模型中,同步意味着发送...
这样,当我们启动应用时,服务器和客户端会自动启动并进行连接。 ```java @Configuration public class NettyConfig { @Bean public NettyServer nettyServer() { return new NettyServer(); // 实现启动服务器...
Socket长连接和Netty框架是网络编程中的重要概念,尤其在Android应用开发和服务器通信中扮演着关键角色。本文将深入探讨这两个主题,并通过提供的源码进行实例解析。 首先,让我们了解一下Socket。Socket是网络通信...
客户端发送16进制给服务端,并行实现socket通道活动状态和断开重新连接的功能, 监听接口是否存在数据,如果存在socket客户端发送给socket服务端的实现 随着物联网的发展,随之出现了各种传感器监测数据的实时发送,...
标题中的"C# Netty 客户端,服务器端包含双向接收"揭示了这是一个关于使用C#语言实现基于Netty框架的客户端和服务器端通信的项目。Netty是Java平台上的一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可...
客户端通过创建Socket实例连接到服务器的特定端口,然后通过输入/输出流进行数据传输。这个过程看似简单,但实际开发时涉及的错误处理、多线程、性能优化等问题往往需要开发者具备扎实的基础。 Netty,由JBOSS团队...
Netty是Java领域的一款高性能、异步事件驱动的网络应用框架,主要用于快速开发可维护的高性能协议服务器和客户端。在本文中,我们将深入探讨Netty的核心特性、工作原理以及如何构建一个简单的Netty服务器和客户端。 ...
标题中的“Netty实现Java服务端和C#客户端联通”是指使用Netty作为Java服务器框架,与C#客户端(使用DotNetty库)进行通信的一种技术实现。这涉及到跨平台的网络通信,以及两个不同编程语言间的交互。 Netty是Java...
Netty4是一款高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨Netty4在构建长连接、实现断开重连、心跳检测以及Msgpack编码解码方面的知识。 首先,我们要...
标题中的“java服务器端(Netty_Proto)和c++客户端tcp通讯”表明这是一个关于使用Java的Netty框架和Google的Protocol Buffers(ProtoBuf)进行TCP通信的项目。Netty是一个高性能、异步事件驱动的网络应用框架,常...
在“netty-socket-master”这个压缩包中,可能包含了服务器端和客户端的代码实现,包括Bootstrap的配置、ChannelHandler的定义、数据传输的逻辑等。通过对这些代码的学习和分析,开发者可以深入理解Netty在Android上...
3. 连接服务器:使用`connect()`方法,传入服务器的IP地址和端口号。 4. 发送和接收数据:`sendall()`用于发送数据,`recv()`用于接收数据,注意TCP是流式协议,所以接收的数据可能需要按需分割。 5. 关闭连接:使用...
4. **Netty处理Client连接**:当Netty服务器接收到新的连接请求时,它会创建一个新的Channel实例,该实例将关联到接收到连接的Socket。然后,服务器可以使用ChannelHandlerContext发送消息到客户端。 5. **数据传输...
Netty的核心在于其使用了非阻塞I/O(Non-blocking I/O,也称为NIO)模型,这使得它在处理大量并发连接时表现出色。NIO是一种I/O模型,与传统的阻塞I/O相比,它允许多个通道(channel)在单个线程中同时处理多个请求...
这时,我们可以使用Netty作为WebSocket的后台服务器,利用其高效的非阻塞I/O模型来处理大量并发连接。Netty的WebSocketServerHandler可以自定义WebSocket的逻辑,如连接处理、消息解析等。 4. **多客户端通信**:在...
Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。在本示例中,我们将深入探讨如何利用Netty实现多客户端连接并进行通信,具体以创建一个简单的聊天室群聊功能为例。...
Java Netty是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的协议服务器和客户端。在Java领域,Netty因其高效性、灵活性和丰富的特性集而被广泛使用,尤其是在开发网络通信应用时。 标题"Java ...
基于Netty实现的MQTT客户端_netty-mqtt-client
Java应用程序中的Netty框架是一个高性能、异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty广泛应用于分布式系统、云计算、大数据处理等领域,它的核心特性包括非阻塞I/O、...