QPS 和併發 如何衡量伺服器端效能

2021-09-30 17:45:39 字數 1667 閱讀 9509

qps 和併發:如何衡量伺服器端效能

和併發相關不得不提的乙個概念就是 qps(query per second),qps 其實是衡量吞吐量(throughput)的乙個常用指標,就是說伺服器在一秒的時間內處理了多少個請求—— 我們通常是指 http 請求,顯然數字越大代表伺服器的負荷越高、處理能力越強。作為參考,乙個有著簡單業務邏輯(包括資料庫訪問)的程式在單核心執行時可以提供 50 - 100 左右的 qps,即每秒可以處理 50 - 100 個請求。

但 qps 只能粗略地衡量請求的數量,完全不關心伺服器處理每個請求的開銷。例如乙個命中快取的請求和乙個需要進行多次資料庫查詢的請求的開銷可能會有乙個數量級的差距,所以 qps 並不能十分精確地衡量伺服器的負載或處理能力,因此我們引入了乙個非常抽象的概念 —— 併發。

大部分請求的響應時間在 15 - 30 毫秒左右,這裡的響應時間是指伺服器處理這個請求所花費的時間,從客戶端測量到的時間可能會稍長一些。想象如果伺服器上只有乙個 cpu 核心在逐個地在處理請求,如果每個請求花費 15 毫秒的話,那麼每秒可以處理 66 個請求,也就是我們前面提到的 66 qps;而如果都是複雜的請求,每個需要 30 毫秒的話,那麼伺服器就只有 33 qps 了。可以看到在處理能力不變的情況下(只有乙個核心),響應時間越高,qps 就越低。又如果在響應時間不變的情況下,如果我們增加乙個 cpu,qps 就會翻倍,這三者之間的關係可以簡單地描述成:吞吐量(qps)= 併發數/平均響應時間[乙個系統吞吐量通常由qps(tps)、併發數兩個因素決定,每套系統這兩個值都有乙個相對極限值,在應用場景訪問壓力下,只要某一項達到系統最高值,系統的吞吐量就上不去了,如果壓力繼續增大,系統的吞吐量反而會下降,原因是系統超負荷工作,上下文切換、記憶體等等其它消耗導致系統效能下降]。

其實 cpu 的數量就是併發最基本的概念,即有多少個 cpu 在工作。當然在實際的伺服器端環境中,我們在 cpu 的基礎上建立起了程序、執行緒、協程這樣複雜的抽象、通過非同步的 io 提高 cpu 的利用率 —— 當需要從硬碟或網路讀取資料時,cpu 會去做其他工作,所以併發和 cpu 的比值會比 1 高一些,io 越多,這個比值會越高。

這時我們可以觀測到的併發數就是伺服器在同時處理多少個請求,也即「併發連線數」。對於 web 後端的場景來說(而不考慮**等長鏈結的場景),我們希望盡快地給客戶端響應,所以請求在伺服器端花費的幾十毫秒中每一毫秒都是必不可少的:可能是在進行計算、也可能是在向磁碟或網路讀寫資料,都在占用著伺服器的資源,因此併發依然是衡量伺服器負荷和處理能力的關鍵指標。

除了併發本身,我們還經常提到「最大併發」的概念,最大併發就是在單位時間(通常是一天)裡併發最高的那一刻有多少個 cpu 在為你工作。大部分應用的請求量並不是均勻地分布在一天中的,因為使用者們往往會集中在傍晚的幾個小時中使用手機,這些時段中的請求量要遠遠高於凌晨。所以人人都希望在傍晚得到更多的計算能力,但遺憾的是這些計算能力需要原子世界中的 cpu 去支援,你不可能在傍晚購買一批伺服器然後在凌晨下掉(當然,這其實是雲計算要解決的問題),所以為了支撐傍晚的高併發,我們必須去準備那麼多的伺服器、必須在凌晨讓很多伺服器閒置,因此其實我們只關心一天中最高的併發數 —— 這代表了我們需要採購多少硬體資源。

qps 和併發:如何衡量伺服器端效能

vnc伺服器端如何配置,vnc伺服器端如何配置教程

作為iis7伺服器管理工具,它支援linux vnc,win vnc,可以實現批量管理,遠端監控,批量開啟鏈結,操作一台等於同時操作n臺 使用起來十分便捷。對於iis7伺服器管理工具來說,它能實現批量管理 同步操作 到期提醒 資料安全和定期執行 等功能。適用於機房管理 站長 運維工作 程式設計師,等...

socket伺服器端

伺服器 include winsock2.h include string.h include stdio.h include time.h include stdarg.h include stdlib.h pragma comment lib,ws2 32 void errexit const ...

kerberos伺服器端

1.安裝tcl wget tar zvxf tcl8.5.12 src.tar.gz cd tcl8.5.12 cd unix configure make make install 3.解壓 tar xvf krb5 1.10.3 signed.tar tar zvxf krb5 1.10.3.t...