當前位置:網站首頁>理解什麼是真正的並發數

理解什麼是真正的並發數

2022-01-28 08:48:33 流楚丶格念

你,真的理解什麼是並發數嗎?

從事測試行業的兄 dei ,或多或少都知道並發數的概念。在計算機領域裏,並發數是指同時訪問服務器站點的連接數。

在實際工作中,經常發現很多人對並發數有誤解。

比如領導說我們系統有10w活躍用戶,所以系統必須要支持10w並發;

比如壓測報告裏寫某個接口支持 50 並發,客戶就會反問難道系統只支持50用戶同時訪問?性能是不是太差了!

對於這種理解,只能說

問出上面問題的人,大多數都存在一個理解上的誤區,認為性能測試中的並發數=並發用戶數,其實事情沒有這麼簡單。

個人來說一下我對並發數的一些理解。

並發其實有兩種:用戶端並發和服務端並發。

具體有什麼區別呢?給大家舉一個例子。

 

一般來說,搶購和秒殺服務是並發數最高的項目類型,比如某網站8點開始搶購某商品,搶購系統部署在北京的某個機房裏。所有的用戶都是通過瀏覽器或者APP來進行商品的搶購。在開始搶購之前,已經有10w個用戶預約了該商品,所以我們可以預測到,8點的時候會有將近10w人(極端情况下)同時去進行搶購。那麼這個時候,意味著10w個客戶端同時開始處理用戶的搶購操作。

 

客戶端(APP或瀏覽器)往往是需要先進行一些邏輯處理,才會把搶購請求發送到服務端。但是客戶端運行設備和環境是不同的。

有人用的是iPhone XS Max;

有人用的是金立雙卡雙待語音王;

有人用的是最新款的MacBook Pro;

有人用的是小霸王學習機。

 

不同的客戶端環境,運行速度是有很大差別的,所以即便有10w人同時在8點開始點擊搶購,等待客戶端向服務端發起搶購請求時,同一時刻發出的請求已經不足10w了,可能只剩下9w了。

大家都知道不能讓自己的孩子輸在起跑線上,但是在這個階段,有一批擁有更好設備的用戶請求已經發送出去了,另外一批低端設備用戶在起跑線上已經輸了。

 

然而殘酷的競爭才剛剛開始,客戶端把請求發送出去後,需要通過漫長的網絡傳輸到比特於北京機房的服務器上。

這個時候更大的差异出現了。參加搶購的用戶分布的全國各地,網絡制式也各有不同,4G/3G、聯通/電信寬帶,50M/100M的帶寬,比起客戶端設備之間幾毫秒的差距,不同環境下網絡的延遲差距可能有幾十毫秒。

 

在黑龍江漠河的小鎮上,王富貴正盤著腿坐在炕上,焦急的等待著手機上顯示的排隊結果;

在祖國最南的西沙群島,漁民阿祖在自己的漁船上看著手機上頁面一直在轉圈圈,而此時手機信號只有2格;

同樣的,在北京北五環外的回龍觀,在不到十平米自如次臥裏,小王看到了電腦屏幕上出現了支付成功頁面,此時的他滿眼都是欣喜,這一刻,他感覺自己是天選之子。

一場搶購盛宴落下帷幕了,在這個過程中有很多細節值得我們思索。在服務端來看,因為客戶端設備的差异和網絡的延遲,10w個並發請求,並不是同時到達服務端的,而且會在一段時間內陸續到達。假設在100ms內全部到達,並且認為同一毫秒到達服務器的請求屬於同一時刻,那麼服務端同一時刻處理的並發請求,也就1000個左右。

 

從上面的例子裏大家也都看出來了,用戶端並發和服務端並發是有著巨大的差异的,用戶端並發>服務端並發。具體多少倍的差异無法計算,因為用戶端的環境是無法預估的。但是可以肯定的是,這個差距肯定是巨大的。

 

從另外一個角度來看,在上述的例子中,假如網絡延遲為0,那麼用戶端有多少並發同時請求,在服務端同時接受到的幾乎就是多少並發。在這種情况下,用戶端並發=服務端並發

所以日常在做性能測試過程中,為了降低網絡延遲,客戶端壓力機和項目服務器都在同一個局域網中,一般都在同一個機房,這樣網絡的延遲是<1ms的。幾乎可以認為是沒有延遲的,在客戶端壓測工具上設置了50並發,那麼在服務端也是50並發。

如果上面講的你都可以理解,那麼文章開頭那兩個問題就有答案了。壓測時系統支持50並發,是指服務端支持50並發,並不是只支持50個用戶同時去訪問。而是遠遠大於50個用戶。

這也從另一個方面說明了一個問題,並發數是一個重要的指標,但是在性能測試中,不需要過分關注並發數的多少,而更應該關注處理的業務量(即TPS),只要系統的TPS足够高,處理業務的時間足够短,哪怕同一時刻來再多的並發請求(只要不超過軟硬件限制),我服務器也能給你安排的明明白白的。

 

版權聲明
本文為[流楚丶格念]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201280848327656.html