在去年的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萬!?。?/p>
--- centos 6.7 8G內存, 一個epoll服務端,15個客戶端(通過增加虛擬IP,每個客戶端5萬個連接),能支持的并發連接數是接近70萬
(當然,調小tcp_rmem tcp_wmem,并發數可能還能繼續提高點)
新聞熱點
疑難解答