場景
網路協議: TCP/IP網路程式介面: socket
CCU: 1000,000
每秒發送訊息次數: 10
總訊息傳送次數: 1000,000*10=10,000,000
瓶頸
linux內核每秒送出的TCP/IP封包次數上限約 10,000,000/sec
鎖
要遍歷全部的連線,一個一個發送訊息,所以需要加鎖。
數量高達1000,000,所以這個過程很久,導致其他操作無法執行。
例如login,logout,都要等全部發送完解鎖後,才能執行。
頻寬
頻寬約需400MB-600MB之間。
解法
針對linux內核發送TCP/IP封包次數上限瓶頸減少發送次數,一秒內的訊息,全部組合成一個訊息,統一發送。
針對鎖的瓶頸
把1000,000連線,分拆為多個集合,用併發的方式同步處理,
可有效減少上鎖時間。
鎖用讀寫鎖,不用互斥鎖。
針對頻寬瓶頸
訊息壓鎖。
換1GB網卡,加大頻寬。
沒有留言:
張貼留言