Nginx(七) 測試使CPU佔用更多能否提升併發數
阿新 • • 發佈:2019-01-07
具體的測試過程就不說了,因為使用的docker。直接講結果吧。
測試環境是這樣的
用一個主(作為負載均衡轉發),倆個從(負載均衡用的)。為什麼需要負載均衡?因為我們之前測試分配核心和程序時,越多它併發數就越低。當我們使用一核心時,反而是併發數最高,且核心的資源都被佔滿了。
所以,我想測試,當佔滿所有的核心,能否提升併發數。
主
:配置了1核心一個執行緒,分配給第四個核心
從1
:配置了1核心一個執行緒,分配給第一個核心
從2
:配置了1核心一個執行緒,分配給第二個核心
它們都在linux機器下,因為用docker開了容器。所以,還是在單個機器下。
測試結果是併發數只能到1300。為什麼反而降了?因為負載均衡和之前測的不一樣,之前是直接為http伺服器,而現在多了負載均衡,所以會更慢。
但是這次的測試並不是完全沒有作用,而是解決了一個我一直存在的疑問:為什麼最高只能1700,明明我cpu還沒用光啊,要是能夠充分利用肯定能更高,可是它為什麼就不用光呢?
這次的測試就是因為這個疑問而起的,其實就是負責nginx的那個核心滿了!它無法處理更多的請求了,這樣請求就不會進入其它的核心。而不是那些優化無效。
所以,負責負載均衡轉發的伺服器,要核心很強才行。多核的話,它們的上下文切換速度也得考慮,而不是越多核心併發數越高(僅在對比單核)。
要租伺服器的時候選擇計算能力高的雙核。1核主要負責負載均衡轉發,另外一個處理linux自身程式。負責專案執行的從機可以為單核,只要調好權重即可,壓力大了就加機器負載均衡。
上面說的“不是越多核心併發數越高”,其實也不恰當,只是對比核數少而已。實際上,你十二核肯定能秒殺一核的(同款)。
預算低就選單核,不差錢模式的話就當我什麼都沒說。