現在 epoll 單機(4G記憶體)併發量最大能達到多少?

時間 2021-06-03 09:57:49

1樓:張揚

貌似樓上都錯了吧???

我們設計乙個最簡模型,假設記憶體速度無限快,cpu無限強, 處理會話的時間開銷為0,那麼我們算一下:記錄乙個會話需要5元組,再增加乙個標誌位(8bit),消耗記憶體總共16byte(考慮記憶體4位元組對齊)。那麼併發多少就可以耗盡記憶體了呢(假設4G記憶體全部給這個模型用,沒有共享記憶體和核心的消耗。

)?4*1024*1024*1024/16=268,435,456。不可思議?只有記憶體容量,不考慮記憶體的效能(分配記憶體的開銷,記憶體拷貝的開銷),cpu的效能(中斷的響應速度),網絡卡的效能(收包發包的延遲,注:

這裡指的是電訊號和光訊號的傳輸速度,解碼速度。)的情況下,這個問題是無解的。

2樓:關於夏天的一切

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

第乙個首先是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萬併發這個應該是極限值了.

蘋果手機的3g記憶體(iphone xr 和4g記憶體 iPhone xs max差別大嗎?

魏先生 短期時間可能看不出明顯差別,但隨著使用年限增加,你就會慢慢發現執行記憶體4G的xsm確實比xr要香一些。不過有一說一,蘋果手機手機到目前為止最高的執行記憶體也就是6G,但是也絲毫不影響其地位,可以看得出,執行內存在蘋果這兒並不是特別重要。雖然說執行記憶體不是特別重要,但也不等同於不重要,雖然...

筆記本拓展記憶體,加個8g(原來有4g記憶體)這樣4 8g可以嗎,影響效能嗎?

沒木目 曾經有一台筆記本,買來2g,後來添了4g,出現的問題就是會花屏,不是開機就花,是低頻度不定期出現,可能一兩個月一次,也可能兩三天一次。換成兩個4g就再也沒有出現過花屏。 FALLENSNOW清風使者 本人就是4 8,跑了好一段時間了,一切正常。至於記憶體相容性問題。這個就別聽下邊瞎忽悠 我用...

學生黨買電腦4G記憶體夠不夠用?

炎天之下CT3 具體看你使用情況,如果你用電腦純粹是做個PPT,寫個word,看看PDF,然後就上網隨便瀏覽瀏覽網頁,不開啟什麼特別重要的軟體,比如什麼設計啊工程啊特定的軟體,那沒啥太大問題。如果你專業需要用什麼特別軟體,什麼PR PS Python啊啥的,那4G是不夠的。具體還是看你的專業和你的使...