epoll实现高并发测试
1,准备环境
Server 端:
系统端口限制 默认查看:cat /proc/sys/net/ipv4/ip_local_port_range
32768 60999(在/etc/sysctl.conf修改)
最大文件句柄限制:查看:cat /proc/sys/fs/file-nr
297440 0 297373(最大值系统计算)
备注:这里最大值与内存相关,在把虚拟机的内存由2G变成3G后由17W变成19W,最后修改fs.file-max后提升比较大
这里原始值为17W左右,修改/etc/sysctl.conf里定义fs.file-max = 1000000 来调整大小,后续有需要继续修改调试
查看系统网络参数相关配置:Vim /etc/sysctl.conf
查看其它限制配置:vim /etc/security/limits.conf
执行 ulimit -n 输出1024,说明对于一个进程而言最多只能打开1024个文件,所以你要采用此默认配置最多也就可以并发上千个TCP连接。
临时修改:ulimit -n 1048576,但是这种临时修改只对当前登录的用户目前使用的环境有效,系统重启或用户退出会就失效。
需要使用到的命令:
ulimit -SHn 1048576
sysctl -w net.ipv4.ip_local_port_range=“1024 65535”
Client配置:
客户端需要的命令
端口限制:如服务端进行修改
文件端口限制:如服务端,或在命令行做以下配置
echo 2000000 >/proc/sys/fs/nr_open
ulimit –SHn 1048576
sysctl -w net.ipv4.ip_local_port_range=“1024 65535”
代码实现流程:
Server :
Listenfd = socket(AF_INET,);