一文搞透高并發(fā)指標(biāo)(QPS、TPS、吞吐量等)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
在很多阿里雙11高并發(fā)場(chǎng)景經(jīng)常提到QPS、TPS、RT、吞吐量等指標(biāo),這些高并發(fā)高性能指標(biāo)都是什么含義?如何來(lái)計(jì)算?下面我一一詳解@mikechen系統(tǒng)吞度量系統(tǒng)吞吐量指的是系統(tǒng)在單位時(shí)間內(nèi)可處理的事務(wù)的數(shù)量,是用于衡量系統(tǒng)性能的重要指標(biāo)。 例如在網(wǎng)絡(luò)領(lǐng)域,某網(wǎng)絡(luò)的系統(tǒng)吞吐量指的是單位時(shí)間內(nèi)通過(guò)該網(wǎng)絡(luò)成功傳遞的消息包數(shù)量。 舉一個(gè)生活中的例子,一說(shuō)就懂,比如:成都雙流國(guó)際機(jī)場(chǎng)年旅客吞吐量達(dá)4011.7萬(wàn)人次,這里的系統(tǒng)單位時(shí)間就是年,完成的數(shù)量這里就是飛行人數(shù)。 上面談到的是機(jī)場(chǎng)的吞吐量,而系統(tǒng)吞吐量指的是系統(tǒng)(比如服務(wù)器)在單位時(shí)間內(nèi)可處理的事務(wù)的數(shù)量,是一個(gè)評(píng)估系統(tǒng)承受力的重要指標(biāo)。 系統(tǒng)吞吐量有幾個(gè)重要指標(biāo)參數(shù):
下面我分別一一詳解。 QPSQPS(Queries Per Second):大家最熟知的就是QPS,這里我就不多說(shuō)了,簡(jiǎn)要意思就是“每秒查詢(xún)率”,是一臺(tái)服務(wù)器每秒能夠相應(yīng)的查詢(xún)次數(shù),是對(duì)一個(gè)特定的查詢(xún)服務(wù)器在規(guī)定時(shí)間內(nèi)所處理流量多少的衡量標(biāo)準(zhǔn)。
TPSTPS(Transactions Per Second):意思是每秒鐘系統(tǒng)能夠處理的交易或事務(wù)的數(shù)量,它是衡量系統(tǒng)處理能力的重要指標(biāo)。 具體事務(wù)的定義都是人為的,可以一個(gè)接口、多個(gè)接口、一個(gè)業(yè)務(wù)流程等等。 舉一個(gè)例子,比如在web性能測(cè)試中,一個(gè)事務(wù)是指事務(wù)內(nèi)第一個(gè)請(qǐng)求發(fā)送到接收到最后一個(gè)請(qǐng)求的響應(yīng)的過(guò)程,以此來(lái)計(jì)算使用的時(shí)間和完成的事務(wù)個(gè)數(shù)。 以單接口定義為事務(wù)為例,每個(gè)事務(wù)包括了如下3個(gè)過(guò)程:
總結(jié),在web性能測(cè)試中一個(gè)事務(wù)表示“從用戶(hù)發(fā)送請(qǐng)求->web server接受到請(qǐng)求,進(jìn)行處理-> web server向DB獲取數(shù)據(jù)->生成用戶(hù)的object(頁(yè)面),返回給用戶(hù)”的過(guò)程。 怎么計(jì)算TPS的呢? 舉一個(gè)最簡(jiǎn)單的例子,如果每秒能夠完成100次上面這三個(gè)過(guò)程,那TPS就是100。 一般的,評(píng)價(jià)系統(tǒng)性能均以每秒鐘完成的技術(shù)交易的數(shù)量來(lái)衡量。 比如大家熟知的阿里雙11,?一秒峰值完成58.3萬(wàn)筆訂單,這樣就量化了系統(tǒng)處理高并發(fā)的重要指標(biāo)。
QPS與TPS的區(qū)別上面分別談完了QPS與TPS,我們?cè)賮?lái)看看兩者有什么區(qū)別呢? 假如對(duì)于一個(gè)頁(yè)面的一次訪(fǎng)問(wèn)算一個(gè)TPS,但一次頁(yè)面請(qǐng)求,可能產(chǎn)生N次對(duì)服務(wù)器的請(qǐng)求,服務(wù)器對(duì)這些請(qǐng)求,就可計(jì)入QPS之中,即QPS=N*TPS。 又假如對(duì)一個(gè)查詢(xún)接口(單場(chǎng)景)壓測(cè),且這個(gè)接口內(nèi)部不會(huì)再去請(qǐng)求其它接口,那么TPS=QPS。
RT響應(yīng)時(shí)間RT(Response-time)響應(yīng)時(shí)間:執(zhí)行一個(gè)請(qǐng)求從開(kāi)始到最后收到響應(yīng)數(shù)據(jù)所花費(fèi)的總體時(shí)間,即從客戶(hù)端發(fā)起請(qǐng)求到收到服務(wù)器響應(yīng)結(jié)果的時(shí)間。 該請(qǐng)求可以是任何東西,從內(nèi)存獲取,磁盤(pán)IO,復(fù)雜的數(shù)據(jù)庫(kù)查詢(xún)或加載完整的網(wǎng)頁(yè)。 暫時(shí)忽略傳輸時(shí)間,響應(yīng)時(shí)間是處理時(shí)間和等待時(shí)間的總和,處理時(shí)間是完成請(qǐng)求要求的工作所需的時(shí)間,等待時(shí)間是請(qǐng)求在被處理之前必須在隊(duì)列中等待的時(shí)間。 響應(yīng)時(shí)間是一個(gè)系統(tǒng)最重要的指標(biāo)之一,它的數(shù)值大小直接反應(yīng)了系統(tǒng)的快慢。
并發(fā)數(shù)Concurrency并發(fā)數(shù)是指系統(tǒng)同時(shí)能處理的請(qǐng)求數(shù)量,這個(gè)也反應(yīng)了系統(tǒng)的負(fù)載能力。 并發(fā),指的是多個(gè)事情,在同一段時(shí)間段內(nèi)發(fā)生了,大家都在爭(zhēng)奪統(tǒng)一資源。 比如:當(dāng)有多個(gè)線(xiàn)程在操作時(shí),如果系統(tǒng)只有一個(gè) CPU,則它根本不可能真正同時(shí)進(jìn)行一個(gè)以上的線(xiàn)程,它只能把 CPU 運(yùn)行時(shí)間劃分成若干個(gè)時(shí)間段,再將時(shí)間段分配給各個(gè)線(xiàn)程執(zhí)行,在一個(gè)時(shí)間段的線(xiàn)程代碼運(yùn)行時(shí),其它線(xiàn)程處于掛起狀態(tài),這種方式我們稱(chēng)之為并發(fā)(Concurrent)。 并發(fā)編程屬于高并發(fā)的一個(gè)重要分支,也是大廠的必備要求,如果想更加全面深入學(xué)習(xí)Java并發(fā),可以查看《Java多線(xiàn)程與并發(fā)編程從0到1全部合集》。 閱讀原文:原文鏈接 該文章在 2025/7/1 23:56:48 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |