1. 程式人生 > >Nginx(七) 測試使CPU佔用更多能否提升併發數

Nginx(七) 測試使CPU佔用更多能否提升併發數

具體的測試過程就不說了,因為使用的docker。直接講結果吧。

測試環境是這樣的
用一個主(作為負載均衡轉發),倆個從(負載均衡用的)。為什麼需要負載均衡?因為我們之前測試分配核心和程序時,越多它併發數就越低。當我們使用一核心時,反而是併發數最高,且核心的資源都被佔滿了。

所以,我想測試,當佔滿所有的核心,能否提升併發數。

:配置了1核心一個執行緒,分配給第四個核心
從1:配置了1核心一個執行緒,分配給第一個核心
從2:配置了1核心一個執行緒,分配給第二個核心

它們都在linux機器下,因為用docker開了容器。所以,還是在單個機器下。
在這裡插入圖片描述
測試結果是併發數只能到1300。為什麼反而降了?因為負載均衡和之前測的不一樣,之前是直接為http伺服器,而現在多了負載均衡,所以會更慢。

但是這次的測試並不是完全沒有作用,而是解決了一個我一直存在的疑問:為什麼最高只能1700,明明我cpu還沒用光啊,要是能夠充分利用肯定能更高,可是它為什麼就不用光呢?

這次的測試就是因為這個疑問而起的,其實就是負責nginx的那個核心滿了!它無法處理更多的請求了,這樣請求就不會進入其它的核心。而不是那些優化無效。

所以,負責負載均衡轉發的伺服器,要核心很強才行。多核的話,它們的上下文切換速度也得考慮,而不是越多核心併發數越高(僅在對比單核)。

要租伺服器的時候選擇計算能力高的雙核。1核主要負責負載均衡轉發,另外一個處理linux自身程式。負責專案執行的從機可以為單核,只要調好權重即可,壓力大了就加機器負載均衡。

上面說的“不是越多核心併發數越高”,其實也不恰當,只是對比核數少而已。實際上,你十二核肯定能秒殺一核的(同款)。

預算低就選單核,不差錢模式的話就當我什麼都沒說。