linux服务器 tcp高并发压测需要设置项
linux服务器部署了一个tcp服务,需要进行并发压力测试 看看服务器能支持多少个tcp长连接 预计会有50w个连接
需要设置linux 不然是无法支持这么多连接的 如果达到这个值是无法建立新连接的 报错信息一般为 too many open files
1 , fs.file-max linux系统能打开的文件句柄数量 这个要增大 默认(65535)肯定是不够的
查看命令 sysctl -a | grep -a "fs.file-max"
设置
echo "fs.file-max = 2100000" >> /etc/sysctl.conf //设置为110w
sysctl -p //立即生效
2 ,ulimit 控制用户级别能打开的文件句柄数量
查看命令 ulimit -n
设置 ulimit -n 1000000 //设置为100w 临时生效
永久生效方法 vim /etc/security/limits.conf
* hard nofile 1000000 //不要超过一百万 值要小于 nr_open
* soft nofile 1000000
重启服务器永久生效
* 如果要超过一百万 还需要设置一个 /proc/sys/fs/nr_open 进程级别能打开的文件句柄数量 (linux内核2.6.25及之后 之前是无法设置的)
查看 cat /proc/sys/fs/nr_open 默认值为 1048576 即1024*1024
设置 echo "fs.nr_open = 1500000" >> /etc/sysctl.conf 要小于fs.file-max
sysctl -p 使修改生效命令
查看tcp连接数命令 netstat -an | grep "ESTABLISHED" | wc -l 看可不可以达到一百万
查看tcp连接数量命令(windows) netstat -an | find "ESTABLISHED" /c
但是在高并发情况下 连接一直增长不上了(2秒内有超过6w个客户端连接过来)
netstat -s | grep "SYNs to LISTEN" 查看tcp丢包数量 多次查看 发现丢包数量一直在增长
设置:
echo 409600 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 409600 > /proc/sys/net/core/somaxconn