1. 程式人生 > >你的linux,socket epoll連線數最大達到過多少

你的linux,socket epoll連線數最大達到過多少

在去年的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,併發數可能還能繼續提高點)