模拟客户端测试java nio selector可管理的最大连接数。
最近在找工作,无聊,模拟客户端测试一下以前写的一个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