你的linux,socket epoll连接数最大达到过多少

2/10/2017来源:ASP.NET技巧人气:1163

在去年的2个面试中被问及用过epoll吗? 这个肯定没啥说的,不说多精通,但也是熟练;

但又被问 你实现过的最大并发连接数是多少?   --  这个。。 还真没概念,产品和项目里也没很大的并发连接要求,所以,不知道

郁闷,那就自己排解一下!开干。。。

把自己的epoll例子代码找出来,稍微调整一下,编译,开始:

./server 12345 和 ./client ,才连接了1018个;

调整最大打开文件句柄数1024000,调整端口默认范围1024 65535  (只是为了大约估算,有些数值设定没啥具体意义)

ifconfig eth0:X  192.168.1.XXX     看了看局域网内ping不通的ip,增加虚拟ip(一共增加了大约15个)

让客户端bind每个ip,从1111 开始递增,50000个端口 -- 每个客户端建立5万个连接

我没有调整tcp-mem,因为我看他默认的1002624页,1002624*4/1024k ≈ 3.9G (我本机8G,客户端和服务端都在本机,所以不用也不能调整了)

最后服务端打印,我看到的最后一个连接数统计是 696167,再然后。。。duang

系统崩溃了,内存用光光了!

好,以后再有人问我这个问题,我就摔他脸上,70万!!!

 ---  centos 6.7  8G内存, 一个epoll服务端,15个客户端(通过增加虚拟IP,每个客户端5万个连接),能支持的并发连接数是接近70万

 (当然,调小tcp_rmem tcp_wmem,并发数可能还能继续提高点)