Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

19.2. 影響連接的因素有哪些?

上面解釋了伺服器端與客戶端,伺服器能開出的連接埠數量會影響最終連接數的數量。除此之外還有哪些因素呢?

檔案打開數量,還以WEB伺服器為例,瀏覽器請求HTML資源,Nginx 會到磁碟上索引對應的檔案並打開,將檔案內容讀到內存,並返回給瀏覽器。如果係統限制了檔案打開數量,Socket 請求仍會失敗。如果是 Unix Socket 檔案打開數量限制,直接影響 Socket 連接數。

磁碟IO性能,多綫程打開檔案太多,導致讀取問題等待時間過長,造成綫程堆積。

內存限制,伺服器端每接受一個TCP連接請求,就會為多綫程/進程分配內存空間。如果限制了進城的內存空間,內存不足,綫程創建失敗。也就是意味着無法再有新連結進入伺服器。

進程數限制,這個因素只影響機遇多進程的TCP Socket,對於多綫程TCP Socket 不影響。

網卡的頻寬,每個TCP 連結請求產生多少頻寬,全負荷工作時頻寬開銷時多少,一般網卡時1GB,如果超過1GB,外面的連結也是會超時的。目前光纖網卡主流40GB 性價比比較高。

網絡設備,交換機容量和背板頻寬,從客戶端到伺服器端,需要經過交換機,交換機的交換能力,和背板頻寬(交換機內存)決定了你從客戶能發出多少連結,伺服器端能接受多少連結。交換機不給力,並發就上不去。還有路由器或防火牆的會話數,這部分請參看《多維度架構之會話數》

以上設置通過 ulimit / sysctl 兩個命令完成內核參數的調整。這裡不多介紹,有興趣看筆者相關文章,如果比較懶可以到我的知乎主頁,點付費諮詢。