1. 程式人生 > >總結:為什麼要限制最大連線數?

總結:為什麼要限制最大連線數?

一個tcp連線需要:1,socket檔案描述符;2,IP地址;3,埠;4,記憶體

原因:

建立連線需要消耗資源,詳情檢視:

https://blog.csdn.net/qj4522/article/details/84892762

https://blog.csdn.net/solstice/article/details/6579232

1、記憶體資源

tcp連線歸根結底需要雙方接收和傳送資料,那麼就需要一個讀緩衝區和寫緩衝區,這兩個buffer在linux下最小為4096位元組,可通過cat /proc/sys/net/ipv4/tcp_rmem和cat /proc/sys/net/ipv4/tcp_wmem來檢視。所以,一個tcp連線最小佔用記憶體為4096+4096 = 8k

,那麼對於一個8G記憶體的機器,在不考慮其他限制下,最多支援的併發量為:810241024/8 約等於100萬。此數字為純理論上限數值,在實際中,由於linux kernel對一些資源的限制,加上程式的業務處理,所以,8G記憶體是很難達到100萬連線的,當然,我們也可以通過增加記憶體的方式增加併發量

2、CPU