在去年的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,并发数可能还能继续提高点)
新闻热点
疑难解答