Netty长连接测试,参数设置
2017-10-23 14:45
190 查看
参考http://www.4ucode.com/Study/Topic/2130412
服务端:
vim /etc/sysctl.conf
加入如下配置:
net.core.somaxconn = 1000000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 10000
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_rmem = 7168 11264 16777216
net.ipv4.tcp_wmem = 7168 11264 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_max_tw_buckets=180000
fs.file-max = 1000000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.netfilter.ip_conntrack_max = 1000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
执行/sbin/sysctl -p生效
vim /etc/security/limits.conf
找到hard nofile和soft nofile配置信息,修改为如下:
* hard nofile 1000000
* soft nofile 1000000
这样重启后用ulimit -a就可以看到open file为自己设置的1000000而不是默认的1024了
客户端:
由于系统默认参数,自动分配的端口数有限,是从32768到61000,所以我们需要更改客户端/etc/sysctl.conf的参数:
net.ipv4.ip_local_port_range = 1024 65535
编辑完成后执行如下命令让配置生效
/sbin/sysctl -p
同样,vim /etc/security/limits.conf
找到hard nofile和soft nofile配置信息,修改为如下:
* hard nofile 1000000
* soft nofile 1000000
测试:
最后,为了测试Netty支持最大的连接数,我们配置如下:
-server -Xms4G -Xmx4G -XX:NewSize=3584m -XX:PermSize=64m -XX:SurvivorRatio=1 -XX:+UseParallelGC -XX:-UseAdaptiveSizePolicy
Eden、S0、S1各1G,Old512M,UseParallelGC回收机制,加入UseAdaptiveSizePolicy不允许回收器自动调整Eden和Survivor区大小。
上面的一堆参数,不明白什么意思>_<
在server端执行dmesg命令,发现存在如下信息:ip_conntrack: table full, dropping packet.
是65322,看来是最大连接跟踪值开得较小了。
再执行如下命令
cat /proc/sys/net/ipv4/ip_conntrack_max
是65322,看来是最大连接跟踪值开得较小了。
接下来执行vim /etc/sysctl.conf 进行编辑,加入如下配置:
net.ipv4.ip_conntrack_max = 1000000 //设置最大连接跟踪值 net.ipv4.netfilter.ip_conntrack_max=1000000net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120--------------------------------------------------------------------
笔记:我的服务器上没有那几个key,cat /proc/sys/net/ipv4/ip_conntrack_max时出现找不到文件的错误执行/sbin/sysctl -p时出现net.ipv4.netfilter.ip_conntrack_max=1000000等没有key的错误解决:
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/rc.local
这样再执行/sbin/sysctl -p就没问题了,具体用途可以man modprobe
在客户端跑一百个java程序,每个进程开一千个线程去连接netty服务,拟建立100000个长连接
实际只有65个java进程在跑,服务端接收长连接63001个,中途最高达到过64885个,但log里面看出连接断掉被remove了
最终稳定在63001,此时,服务端进程占内存0.4%(共16G内存),约64M,每个长连接占内存1k左右。
稳定时服务端没有给客户端发消息了,只是保持着长连接
之前测试,当连接过程中不断通讯时,会出现各种问题,程序会死掉。再想优化办法。
服务端拟隔5分钟向所有客户端问好。不知道会不会直接挂掉?
上述是在一台机子上测试的,所以最多只能跑64511个,现在放在两台上,每台6w,连接数轻松到达12w。并且服务端每隔200s向所有客户端发送消息,也没有压力!
没有通讯时CPU和MEM分别为0.3%(八核)和7.9%
通讯时CPU和MEM最高达到144.8%和9.3%
服务端:
vim /etc/sysctl.conf
加入如下配置:
net.core.somaxconn = 1000000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 10000
net.core.netdev_max_backlog = 20000
net.ipv4.tcp_rmem = 7168 11264 16777216
net.ipv4.tcp_wmem = 7168 11264 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_orphans = 131072
net.ipv4.tcp_max_tw_buckets=180000
fs.file-max = 1000000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.netfilter.ip_conntrack_max = 1000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
执行/sbin/sysctl -p生效
vim /etc/security/limits.conf
找到hard nofile和soft nofile配置信息,修改为如下:
* hard nofile 1000000
* soft nofile 1000000
这样重启后用ulimit -a就可以看到open file为自己设置的1000000而不是默认的1024了
客户端:
由于系统默认参数,自动分配的端口数有限,是从32768到61000,所以我们需要更改客户端/etc/sysctl.conf的参数:
net.ipv4.ip_local_port_range = 1024 65535
编辑完成后执行如下命令让配置生效
/sbin/sysctl -p
同样,vim /etc/security/limits.conf
找到hard nofile和soft nofile配置信息,修改为如下:
* hard nofile 1000000
* soft nofile 1000000
测试:
最后,为了测试Netty支持最大的连接数,我们配置如下:
-server -Xms4G -Xmx4G -XX:NewSize=3584m -XX:PermSize=64m -XX:SurvivorRatio=1 -XX:+UseParallelGC -XX:-UseAdaptiveSizePolicy
Eden、S0、S1各1G,Old512M,UseParallelGC回收机制,加入UseAdaptiveSizePolicy不允许回收器自动调整Eden和Survivor区大小。
上面的一堆参数,不明白什么意思>_<
在server端执行dmesg命令,发现存在如下信息:ip_conntrack: table full, dropping packet.
是65322,看来是最大连接跟踪值开得较小了。
再执行如下命令
cat /proc/sys/net/ipv4/ip_conntrack_max
是65322,看来是最大连接跟踪值开得较小了。
接下来执行vim /etc/sysctl.conf 进行编辑,加入如下配置:
net.ipv4.ip_conntrack_max = 1000000 //设置最大连接跟踪值 net.ipv4.netfilter.ip_conntrack_max=1000000net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120--------------------------------------------------------------------
笔记:我的服务器上没有那几个key,cat /proc/sys/net/ipv4/ip_conntrack_max时出现找不到文件的错误执行/sbin/sysctl -p时出现net.ipv4.netfilter.ip_conntrack_max=1000000等没有key的错误解决:
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/rc.local
这样再执行/sbin/sysctl -p就没问题了,具体用途可以man modprobe
在客户端跑一百个java程序,每个进程开一千个线程去连接netty服务,拟建立100000个长连接
实际只有65个java进程在跑,服务端接收长连接63001个,中途最高达到过64885个,但log里面看出连接断掉被remove了
最终稳定在63001,此时,服务端进程占内存0.4%(共16G内存),约64M,每个长连接占内存1k左右。
稳定时服务端没有给客户端发消息了,只是保持着长连接
之前测试,当连接过程中不断通讯时,会出现各种问题,程序会死掉。再想优化办法。
服务端拟隔5分钟向所有客户端问好。不知道会不会直接挂掉?
上述是在一台机子上测试的,所以最多只能跑64511个,现在放在两台上,每台6w,连接数轻松到达12w。并且服务端每隔200s向所有客户端发送消息,也没有压力!
没有通讯时CPU和MEM分别为0.3%(八核)和7.9%
通讯时CPU和MEM最高达到144.8%和9.3%
相关文章推荐
- rJava的安装与测试-不用每次设置VM参数‘-Djava.library.path’
- flask客户端测试使用设置cookie参数
- db_file_multiblock_read_count参数设置取值测试
- webpagetest使用-测试过程中参数设置
- 接口测试设置参数的方式-接口的参数是一个json长串
- Jmeter学习(八)接口测试之二(设置参数)
- 测试工具Loadrunner日志参数的设置
- 在今天的测试过程中,我刚开始使用get方法传递参数,出现乱码,但是使用post传参数好着的,需要在tomcat的server.xml里面进行设置URIEncoding="UTF-8"即可
- oracle cursor_sharing 参数设置测试
- Caffe中文件参数设置(九-2):训练和测试自己的数据集-windows10版本
- JMeter性能测试-请求数据参数设置-自动增长变量
- Linux LVS高并发测试程序,内核参数设置,连接数查询指令
- 测试工具Loadrunner日志参数的设置与使用 --http://epan-chen.javaeye.com/blog/317594
- 不同场景下JVM参数的设置
- Django中的CACHE_BACKEND参数和站点级Cache设置
- DL4J本地测试,设置RDDTrainingApproach.Export模式,产生Caused by: java.lang.UnsatisfiedLinkError: org.apache.hado
- sunos和linux设置LANG等参数将默认语言还原为英文
- Linux脚本里使用未知参数设置变量名
- Django中的CACHE_BACKEND参数和站点级Cache设置
- MySQL五大类参数设置