准备工作
操作系统Ubuntu 12
在/etc/sysctl.conf中添加如下配置:
fs.file-max = 1048576
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_rmem = 4096 4096 16777216
net.ipv4.tcp_wmem = 4096 4096 16777216
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
在/etc/security/limits.conf中添加如下配置:
* soft nofile 1048576
* hard nofile 1048576
最后使用ulimit -an查询设置是否生效。
测试主机cpu:
内存:
客户端测试机用VMware创建12台虚拟机。机器性能就不列举了。每台虚拟机可以跑3W链接
1:t-io启动时内存占用率以及链接情况
2:5W链接时内存占用情况
3:10W链接时内存占用情况
4:20W链接时内存占用情况
5:30W链接时内存占用情况
java进程统计情况
cpu
jvm
2小时后观察内存变化情况如下图
结论如下
- 0-10万连接。内存变化较大。主要是由于内存初始化时jvm会占用一部分内存。
- 10万之后。每增加10万连接 内存占用率上升300M左右。
- 随着连接数增加可以发现cpu性能对连接数影响不大。
- 新生代内存与老生代内存占用率比较合理。
- 并发30W连接在2小时内。内存变化不明显。处于合理状态
根据以上数据可以推论 —-> 以8G内存(可使用内存为7.5G左右)为例:当内存占用率达到5G左右时足以支撑100W并发连接。