linux 100k tcp连接
最近看了深入理解Linux网络,里面写的测试单机百万个TCP连接还是很好玩的
于是想自己测试一下,我就用熟悉的 Go 来写,然后也记录一下我遇到的一些问题
1. 内核参数修改
- 服务器可打开最大文件数句柄
#vim /etc/sysctl.conf
fs.file-max=1100000
fs.nr_open=1100000
#sysctl -p 使之生效
#sysctl -a 查看是否生效
- 修改用户最大可打开文件数量
#vim /etc/security/limits.conf
root soft nofile 1010000
root hard nofile 1010000
重进终端
这里就遇到问题了,ubuntu 系统如果按照书中的写法 “* soft nofile 1010000”,是不生效的,需要指定用户 root 才行
- 调整端口可用范围
#vim /etc/sysctl.conf
net.ipv4.ip_local_port_range = 5000 65000
#sysctl -p 使之生效
#sysctl -a 查看是否生效
2. Go 语言代码
- 服务端
3. 查问题
服务器端连接数达到 30000 后总是会出现
tcpdump net 1.1.1.1 -w go.txt
tcpdump port 1111 -w go.txt
tcp.port==40942
tcp.flags==0x014 RST包过滤