在去年的2個(gè)面試中被問及用過epoll嗎? 這個(gè)肯定沒啥說的,不說多精通,但也是熟練;
但又被問 你實(shí)現(xiàn)過的最大并發(fā)連接數(shù)是多少? -- 這個(gè)。。 還真沒概念,產(chǎn)品和項(xiàng)目里也沒很大的并發(fā)連接要求,所以,不知道
郁悶,那就自己排解一下!開干。。。
把自己的epoll例子代碼找出來,稍微調(diào)整一下,編譯,開始:
./server 12345 和 ./client ,才連接了1018個(gè);
調(diào)整最大打開文件句柄數(shù)1024000,調(diào)整端口默認(rèn)范圍1024 65535 (只是為了大約估算,有些數(shù)值設(shè)定沒啥具體意義)
ifconfig eth0:X 192.168.1.XXX 看了看局域網(wǎng)內(nèi)ping不通的ip,增加虛擬ip(一共增加了大約15個(gè))
讓客戶端bind每個(gè)ip,從1111 開始遞增,50000個(gè)端口 -- 每個(gè)客戶端建立5萬個(gè)連接
我沒有調(diào)整tcp-mem,因?yàn)槲铱此J(rèn)的1002624頁,1002624*4/1024k ≈ 3.9G (我本機(jī)8G,客戶端和服務(wù)端都在本機(jī),所以不用也不能調(diào)整了)
最后服務(wù)端打印,我看到的最后一個(gè)連接數(shù)統(tǒng)計(jì)是 696167,再然后。。。duang
系統(tǒng)崩潰了,內(nèi)存用光光了!
好,以后再有人問我這個(gè)問題,我就摔他臉上,70萬!!!
--- centos 6.7 8G內(nèi)存, 一個(gè)epoll服務(wù)端,15個(gè)客戶端(通過增加虛擬IP,每個(gè)客戶端5萬個(gè)連接),能支持的并發(fā)連接數(shù)是接近70萬
(當(dāng)然,調(diào)小tcp_rmem tcp_wmem,并發(fā)數(shù)可能還能繼續(xù)提高點(diǎn))
新聞熱點(diǎn)
疑難解答