最近在找工作,无聊,模拟客户端测试一下以前写的一个nio框架:
测试机器:Window xp sp3
一:客户端准备:
1.修改注册表:因为windows 默认只开通0-5000个端口,经测试最多可以连接3900多个并发连接--,(连接到一个服务时器的本地端口是有限的,也就只能是0到65535)。
1). 启动注册表编辑器。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
2). 新建
值名称:MaxUserPort
值类型: DWORD
值数据: 65534(用十进制的方法写进去就可以,如果是十六进制,是FFFE,因为4个F是65535嘛)
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
修改注册表后的测试结果:模拟客户端一台机器可以支持到16000多个客户端连接。
二。服务端准备:我需要一台大内存的服务器,支持100万个长连接,这个没办法弄到.
-->用自己机器测试结果:1万个长连接稳定快速运行。
1.服务端程序已经写好
2.linux /windows系统设置
总结:
1)Socket服务器接收连接数是有硬件限制的,因为它会消耗服务器CPU,内存,网络资源-->(理论上服务器器端接收连接是没有软限制的--因为服务器只用一个端口,也就只占内存,CPU),
2).服务器再牛也没办法,所以就有了服务器的分布式架构,通过它来分压,多台服务器,要是你想要连接数量很大的话只能这样了.要不你就让长久不通信的断开(短连接),释放资源,
3).或者采用UDP协议。
学习:Linux下socket高并发系统设置
-->http://www.29ma.cn/20130409/1008/
-->http://rdc.taobao.com/blog/cs/?p=1062
分享到:
相关推荐
而`zio-tls-http`利用Java NIO,通过选择器(Selector)和通道(Channel)进行异步I/O操作,减少了对线程的依赖,提高了系统的并行处理能力,从而实现了更高的吞吐量。 其次,`zio-tls-http`构建于Scala的ZIO库之上...
这种模型在连接数量较少时还可以接受,但随着并发连接数的增加,服务器需要维护大量线程,消耗资源且易导致线程池耗尽。 ### 2. PIO (Pseudo-Asynchronous I/O) PIO并不是Java标准库中的概念,而是对传统BIO模型的...
例如,使用Java NIO的ServerSocketChannel和SocketChannel可以同时处理多个客户端连接,而无需为每个连接创建新的线程。这样,服务器可以更有效地利用资源,处理更多的并发连接。 本项目可能包含以下几个部分: 1....
- Netty的核心在于其NIO(非阻塞I/O)模型,它利用Java的Selector机制实现了高效的多路复用。这使得Netty能够处理大量的并发连接,非常适合大数据量、高并发的网络通信场景。 - Netty提供了一套丰富的协议编解码器...
### Java基础知识 #### Collection - **集合框架**:Java中的集合框架主要分为两种类型:`List` 和 `Set`。 - **List**:有序集合,可以包含重复元素。主要实现有`ArrayList`(基于数组)、`LinkedList`(基于...