4G記憶體伺服器epoll併發量最大能達到多少

2021-08-01 21:21:33 字數 1125 閱讀 9008

這篇文章主要介紹了4g記憶體伺服器epoll併發量最大能達到多少?,本文總結了一些計算的公式,僅做參考,需要的朋友可以參考下

按照題主的意思 是根據記憶體去算乙個最大併發的連線數. 那麼首先要找出來單個連線消耗記憶體的地方.

第乙個首先是socket buffer. read 和write 分別有乙個, 預設大小在

複製**

**如下:

/proc/sys/net/ipv4/tcp_rmem (for read)

/proc/sys/net/ipv4/tcp_wmem (for write)

預設大小都是87k和16k, 最低是4k和4k, 最高是2m,2m, 實際使用預設值最低也要保留8k,8k.

然後是邏輯io緩衝區

就是比如你監聽了recv事件 事件來了 你要有記憶體可用(一般都是socket建立起就分配好,斷開才會釋放的).

這個記憶體是自己寫socket程式時候自己控制的, 最低也要4k,4k, 實際使用8k,8k至少.

現在設定乙個優化方案和使用場景, 首先假設4g記憶體全部為空閒(系統和其他程序也要記憶體的….

假如網路包的大小都可以控制在4k以下, 假設所有連線的網路都不會擁堵, 或者擁堵時候的總量在4k以下:

乙個連線的記憶體消耗是4+4+4+4=16k

4g/16k=26.2萬併發

假如網路包的大小都可以控制在8k以下, 假設所有連線的網路都不會擁堵, 或者擁堵時候的總量在8k以下

乙個socket的記憶體占用介於 24k ~ 32k之間, 保守的按照32k算 

4g/32k=13.1萬併發, 這個在生產環境作為乙個純網路層面的記憶體消耗, 是可以作為參考的.

假如使用預設配置, 假如所有連線的網路都出現嚴重擁堵, 不考慮邏輯上的傳送佇列的占用,

使用預設配置是2m+2m+8+8 ~= 4m

4g/4m=1024併發 ( …

如果考慮到傳送佇列也擁堵的話 自己腦補.

如果只是為了跑分 為了併發而優化, 沒有常駐的邏輯緩衝區 並且socket的網路吞吐量很小並且負載平滑, 把socket buffer size設定系統最低.

那麼是4g/8k = 52.4萬併發 這個應該是極限值了.

4G記憶體伺服器的MySQL配置優化

公司 訪問量越來越大 日均超10萬pv mysql自然成為瓶頸,關於 mysql 的優化,最基本的是 mysql 系統引數的優化。mysql對於web架構效能的影響最大,也是關鍵的核心部分。mysql的設定是否合理優化,直接影響到web的速度和承載量 同時,mysql也是優化難度最大的乙個部分,不但...

Epoll實現伺服器高併發

最近在做乙個關於高併發伺服器相關的專案需要用到非同步 非阻塞io通訊,實現高tcp併發。以下用epoll技術實現乙個簡單的tcp高併發伺服器,驗證無業務處理的情況下,epoll處理併發連線的數的效果。include include include include include include in...

高併發伺服器(基於epoll)

本章節是用基本的linux unix基本函式編寫乙個完整的伺服器和客戶端例子,可在linux ubuntu 和unix freebsd 上執行,客戶端和服務端的功能如下 客戶端從標準輸入讀入一行,傳送到服務端 服務端從網路讀取一行,把小寫變為大寫,然後輸出到客戶端 客戶端收到服務端的響應,輸出這一行...