作者:Gakki
基礎(chǔ)概念:HPS、TPS、QPS、RPS、RT、并發(fā)用戶數(shù)概念?簡(jiǎn)要介紹?
HPS(Hits Per Second):每秒點(diǎn)擊次數(shù),單位是次/秒。
TPS(Transaction per Second):系統(tǒng)每秒處理事務(wù)數(shù),簡(jiǎn)稱TPS, 每秒事務(wù)數(shù), 是衡量系統(tǒng)性能的一個(gè)非常重要的指標(biāo)。
QPS(Query per Second):系統(tǒng)每秒處理查詢次數(shù),單位是次/秒。對(duì)于互聯(lián)網(wǎng)業(yè)務(wù)中,如果某些業(yè)務(wù)有且僅有一個(gè)請(qǐng)求連接,那么TPS=QPS=HPS,一般情況下用TPS來衡量整個(gè)業(yè)務(wù)流程,用QPS來衡量接口查詢次數(shù),用HPS來表示對(duì)服務(wù)器點(diǎn)擊請(qǐng)求
RPS 即每秒請(qǐng)求數(shù)(Request Per Second),通常用來描述施壓引擎實(shí)際發(fā)出的壓力大小。PS:并發(fā)數(shù)過低時(shí)可能達(dá)不到預(yù)期的 RPS,并發(fā)數(shù)過高時(shí)可能壓力過大壓垮服務(wù)器
并發(fā)用戶數(shù):簡(jiǎn)稱VU ,指的是現(xiàn)實(shí)系統(tǒng)中操作業(yè)務(wù)的用戶,在性能測(cè)試工具中,一般稱為虛擬用戶數(shù)(Virutal User),注意并發(fā)用戶數(shù)跟注冊(cè)用戶數(shù)、在線用戶數(shù)有很大差別的,并發(fā)用戶數(shù)一定會(huì)對(duì)服務(wù)器產(chǎn)生壓力的,而在線用戶數(shù)只是 ”掛” 在系統(tǒng)上,對(duì)服務(wù)器不產(chǎn)生壓力,注冊(cè)用戶數(shù)一般指的是數(shù)據(jù)庫(kù)中存在的用戶數(shù)。
響應(yīng)時(shí)間:簡(jiǎn)稱RT,指的是業(yè)務(wù)從客戶端發(fā)起到客戶端接受的時(shí)間。
壓測(cè)工具?你主要看哪些指標(biāo)?
壓測(cè)工具:jmeter
Label:每個(gè) JMeter 的 element(例如 HTTP Request)都有一個(gè) Name 屬性,這里顯示的就是 Name 屬性的值
# Samples:表示你這次測(cè)試中一共發(fā)出了多少個(gè)請(qǐng)求,如果模擬10個(gè)用戶,每個(gè)用戶迭代10次,那么這里顯示100
Average:平均響應(yīng)時(shí)間——默認(rèn)情況下是單個(gè) Request 的平均響應(yīng)時(shí)間,當(dāng)使用了 Transaction Controller 時(shí),也可以以Transaction 為單位顯示平均響應(yīng)時(shí)間
Median:中位數(shù),也就是 50% 用戶的響應(yīng)時(shí)間
90% Line:90% 用戶的響應(yīng)時(shí)間
Note:關(guān)于 50% 和 90% 并發(fā)用戶數(shù)的含義
Min:最小響應(yīng)時(shí)間
Max:最大響應(yīng)時(shí)間
Error%:本次測(cè)試中出現(xiàn)錯(cuò)誤的請(qǐng)求的數(shù)量/請(qǐng)求的總數(shù)
Throughput:吞吐量——默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second),當(dāng)使用了 Transaction Controller 時(shí),也可以表示類似 LoadRunner 的 Transaction per Second 數(shù)
KB/Sec:每秒從服務(wù)器端接收到的數(shù)據(jù)量,相當(dāng)于LoadRunner中的Throughput/Sec
性能測(cè)試中TPS上不去的幾種原因淺析?
TPS(Transaction Per Second):每秒事務(wù)數(shù),指服務(wù)器在單位時(shí)間內(nèi)(秒)可以處理的事務(wù)數(shù)量,一般以request/second為單位。
- 網(wǎng)絡(luò)帶寬。在壓力測(cè)試中,有時(shí)候要模擬大量的用戶請(qǐng)求,如果單位時(shí)間內(nèi)傳遞的數(shù)據(jù)包過大,超過了帶寬的傳輸能力,那么就會(huì)造成網(wǎng)絡(luò)資源競(jìng)爭(zhēng),間接導(dǎo)致服務(wù)端接收到的請(qǐng)求數(shù)達(dá)不到服務(wù)端的處理能力上限。
- 連接池??捎玫倪B接數(shù)太少,造成請(qǐng)求等待。連接池一般分為服務(wù)器連接池(比如Tomcat)和數(shù)據(jù)庫(kù)連接池(或者理解為最大允許連接數(shù)也行)。
- 垃圾回收機(jī)制。從常見的應(yīng)用服務(wù)器來說,比如Tomcat,因?yàn)閖ava的的堆棧內(nèi)存是動(dòng)態(tài)分配,具體的回收機(jī)制是基于算法,如果新生代的Eden和Survivor區(qū)頻繁的進(jìn)行Minor GC,老年代的full GC也回收較頻繁,那么對(duì)TPS也是有一定影響的,因?yàn)槔厥掌浔旧砭蜁?huì)占用一定的資源。
- 數(shù)據(jù)庫(kù)配置。高并發(fā)情況下,如果請(qǐng)求數(shù)據(jù)需要寫入數(shù)據(jù)庫(kù),且需要寫入多個(gè)表的時(shí)候,如果數(shù)據(jù)庫(kù)的最大連接數(shù)不夠,或者寫入數(shù)據(jù)的SQL沒有索引沒有綁定變量,抑或沒有主從分離、讀寫分離等,就會(huì)導(dǎo)致數(shù)據(jù)庫(kù)事務(wù)處理過慢,影響到TPS。
- 通信連接機(jī)制。串行、并行、長(zhǎng)連接、管道連接等,不同的連接情況,也間接的會(huì)對(duì)TPS造成影響。
- 硬件資源。包括CPU(配置、使用率等)、內(nèi)存(占用率等)、磁盤(I/O、頁(yè)交換等)。
- 壓力機(jī)。比如jmeter,單機(jī)負(fù)載能力有限,如果需要模擬的用戶請(qǐng)求數(shù)超過其負(fù)載極限,也會(huì)間接影響TPS(這個(gè)時(shí)候就需要進(jìn)行分布式壓測(cè)來解決其單機(jī)負(fù)載的問題)。
- 壓測(cè)腳本。還是以jemter舉個(gè)例子,之前工作中同事遇到的,進(jìn)行階梯式加壓測(cè)試,最大的模擬請(qǐng)求數(shù)超過了設(shè)置的線程數(shù),導(dǎo)致線程不足。提到這個(gè)原因,想表達(dá)意思是:有時(shí)候測(cè)試腳本參數(shù)配置等原因,也會(huì)影響測(cè)試結(jié)果。
- 業(yè)務(wù)邏輯。業(yè)務(wù)解耦度較低,較為復(fù)雜,整個(gè)事務(wù)處理線被拉長(zhǎng)導(dǎo)致的問題。
- 系統(tǒng)架構(gòu)。比如是否有緩存服務(wù),緩存服務(wù)器配置,緩存命中率、緩存穿透以及緩存過期等,都會(huì)影響到測(cè)試結(jié)果。
性能測(cè)試場(chǎng)景設(shè)置思路?
無論并發(fā)模式還是TPS模式,場(chǎng)景就是一個(gè)壓測(cè)模型,壓測(cè)模型中有串行的事務(wù)(如添加購(gòu)物車+購(gòu)物車下單+付款)也有并行的接口(在不同串聯(lián)鏈路中的壓測(cè)API),最終組成一個(gè)復(fù)雜或者簡(jiǎn)單的場(chǎng)景。然后根據(jù)新業(yè)務(wù)上線的目標(biāo)、或者日常峰值的等比例目標(biāo)、或者重大業(yè)務(wù)活動(dòng)的預(yù)估支撐能力去設(shè)置每個(gè)API的目標(biāo)能力(TPS是一步到位的按照吞吐能力設(shè)置的,推薦TPS模式,比如前面提到的添加購(gòu)物車+購(gòu)物車下單+付款這種流程就是一個(gè)漏斗模型,TPS設(shè)置為逐漸變小的模型即可),當(dāng)然也可以在初期的測(cè)試中更謹(jǐn)慎一點(diǎn),將目標(biāo)量級(jí)設(shè)置得整體低一點(diǎn),當(dāng)最終能力達(dá)到之后建議可以調(diào)整原定目標(biāo)量級(jí)到120%或者150%,驗(yàn)證限流準(zhǔn)入/高可用基礎(chǔ)設(shè)施的抗壓能力。目標(biāo)量級(jí)即當(dāng)前壓測(cè)場(chǎng)景中這個(gè)壓測(cè)API的施壓上限。而起步量級(jí)可以從5%或者10%開始,過程中視業(yè)務(wù)指標(biāo)數(shù)據(jù)和被壓測(cè)端的整體負(fù)載臨時(shí)調(diào)整。
對(duì)服務(wù)器性能測(cè)試的看法?
針對(duì)服務(wù)器端的性能,以TPS為主來衡量系統(tǒng)的性能,并發(fā)用戶數(shù)為輔來衡量系統(tǒng)的性能,如果必須要用并發(fā)用戶數(shù)來衡量的話,需要一個(gè)前提,那就是交易在多長(zhǎng)時(shí)間內(nèi)完成,因?yàn)樵谙到y(tǒng)負(fù)載不高的情況下,將思考時(shí)間(思考時(shí)間的值等于交易響應(yīng)時(shí)間)加到串聯(lián)鏈路(場(chǎng)景)中,并發(fā)用戶數(shù)基本可以增加一倍,因此用并發(fā)用戶數(shù)來衡量系統(tǒng)的性能沒太大的意義。同樣的,如果系統(tǒng)間的吞吐能力差別很大,那么同樣的并發(fā)下TPS差距也會(huì)很大。
系統(tǒng)的性能決定的要素?跟并發(fā)用戶數(shù)的關(guān)系?
由TPS決定,跟并發(fā)用戶數(shù)沒有多大關(guān)系。
系統(tǒng)的最大TPS是一定的(在一個(gè)范圍內(nèi)),但并發(fā)用戶數(shù)不一定,可以調(diào)整。
建議性能測(cè)試的時(shí)候,不要設(shè)置過長(zhǎng)的思考時(shí)間,以最壞的情況下對(duì)服務(wù)器施壓。
Jmeter的工作原理是什么?
jmeter可以作為web服務(wù)器與瀏覽器直接的代理網(wǎng)關(guān),以便捕獲瀏覽器的請(qǐng)求和web服務(wù)器的響應(yīng),如此就可以很容易地生成性能測(cè)試腳本。有了性能測(cè)試腳本,jmeter就可以通過線程來模擬真實(shí)用戶對(duì)web服務(wù)器的訪問壓力。這與LoadRunner的工作原理基本一致。
你常用的元件、各自的作用是什么?
- 測(cè)試計(jì)劃(Test Plan)是使用 JMeter 進(jìn)行測(cè)試的起點(diǎn),它是其它 JMeter 測(cè)試元件的容器。
- 線程組(Thread Group)代表一定數(shù)量的并發(fā)用戶,它可以用來模擬并發(fā)用戶發(fā)送請(qǐng)求。
- 取樣器(sampler)定義實(shí)際的請(qǐng)求內(nèi)容,被線程組包含,我們主要用HTTP請(qǐng)求。
- 監(jiān)聽器(Listener)
- 邏輯控制器(Logic Controller)
- 斷言(Assertions)
- 配置元件(Config Element)
- 前置處理器(Pre Processors)和后置處理器(Post Processors)
- 定時(shí)器(Timer)
前端的性能應(yīng)該從哪些方面去測(cè)試?應(yīng)該關(guān)注哪些指標(biāo)?
- 使用的一些工具
- 查看靜態(tài)資源
- JS、CSS等資源加載速度
- 頁(yè)面渲染
- 不同瀏覽器上加載速度
什么是緩存?
緩存就是在內(nèi)存中存儲(chǔ)的數(shù)據(jù)備份,當(dāng)數(shù)據(jù)沒有發(fā)生本質(zhì)變化的時(shí)候,我們避免數(shù)據(jù)的查詢操作直接連接數(shù)據(jù)庫(kù),而是去 內(nèi)容中讀取數(shù)據(jù),這樣就大大降低了數(shù)據(jù)庫(kù)的讀寫次數(shù),而且從內(nèi)存中讀數(shù)據(jù)的速度要比從數(shù)據(jù)庫(kù)查詢要快很多。
什么是Redis?
1)Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
2)Redis支持master-slave(主-從)模式應(yīng)用
3)Redis支持?jǐn)?shù)據(jù)持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
4)Redis單個(gè)value的最大限制是1GB,memcached只能保存1MB的數(shù)據(jù)。
什么是全鏈路壓測(cè)?
基于實(shí)際的生產(chǎn)業(yè)務(wù)場(chǎng)景、系統(tǒng)環(huán)境,模擬海量的用戶請(qǐng)求和數(shù)據(jù)對(duì)整個(gè)業(yè)務(wù)鏈進(jìn)行壓力測(cè)試,并持續(xù)調(diào)優(yōu)的過程
性能測(cè)試關(guān)注的指標(biāo)是什么?
- 用戶數(shù)
- ①注冊(cè)用戶數(shù)
注冊(cè)用戶數(shù)指軟件中已經(jīng)注冊(cè)的用戶,這些用戶是系統(tǒng)的潛在用戶,隨時(shí)都有可能上線。這個(gè)指標(biāo)的意義在于讓測(cè)試工程師了解系統(tǒng)數(shù)據(jù)中的數(shù)據(jù)總量和系統(tǒng)最大可能有多少用戶同時(shí)在線。 - ②在線用戶數(shù)
在線用戶數(shù)是指某一時(shí)刻已經(jīng)登錄系統(tǒng)的用戶數(shù)量。在線用戶數(shù)只是統(tǒng)計(jì)了登錄系統(tǒng)的用戶數(shù)量,這些用戶不一定都對(duì)系統(tǒng)進(jìn)行操作,對(duì)服務(wù)器產(chǎn)生壓力。 - ③并發(fā)用戶數(shù)
不同于在線用戶數(shù),并發(fā)用戶數(shù)是指某一時(shí)刻向服務(wù)器發(fā)送請(qǐng)求的在線用戶數(shù),他是衡量服務(wù)器并發(fā)容量和同步協(xié)調(diào)能力的重要指標(biāo),從這個(gè)含義上講,我們可能會(huì)如下兩種理解:
同一時(shí)刻向服務(wù)器發(fā)送相同或者不同請(qǐng)求的用戶數(shù),也就是說,既可以包括對(duì)某一業(yè)務(wù)的相同請(qǐng)求,也可以包括對(duì)多個(gè)業(yè)務(wù)的不同請(qǐng)求
同一時(shí)刻向服務(wù)器發(fā)送相同請(qǐng)求的用戶數(shù),僅限于某一業(yè)務(wù)的相同請(qǐng)求
- 事務(wù)的響應(yīng)時(shí)間
事務(wù)是指用戶在客戶端做一種或多種業(yè)務(wù)所做的操作集,事務(wù)的響應(yīng)時(shí)間就是衡量用戶執(zhí)行這些操作集所花費(fèi)的時(shí)間。在性能測(cè)試中,一般通過計(jì)算事務(wù)的開始時(shí)間和結(jié)束時(shí)間的差值來獲取事務(wù)的響應(yīng)時(shí)間。
一個(gè)事務(wù)表示一個(gè)“從用戶發(fā)送請(qǐng)求->web server接受到請(qǐng)求,進(jìn)行處理-> web server向DB獲取數(shù)據(jù)->生成用戶的object(頁(yè)面),返回給用戶”的過程,一般的響應(yīng)時(shí)間都是針對(duì)事務(wù)而言的。 - 每秒點(diǎn)擊數(shù)
每秒點(diǎn)擊數(shù)是指每秒鐘像web服務(wù)器提交的HTTP請(qǐng)求數(shù),它是衡量服務(wù)器處理能力的一個(gè)常用指標(biāo)。需要注意的是,這里的相應(yīng)時(shí)間并非鼠標(biāo)的一次單擊操作,因?yàn)樵谝淮螁螕舨僮髦?,客戶端可能向服?wù)器發(fā)出多個(gè)HTTP請(qǐng)求,切勿混淆。 - 吞吐率
吞吐率通常指單位時(shí)間內(nèi)從服務(wù)器返回的字節(jié)數(shù),也可以單位時(shí)間內(nèi)客戶提交的請(qǐng)求數(shù)。吞吐率是大型web系統(tǒng)衡量自身負(fù)載能力的一個(gè)重要指標(biāo),一般來說,吞吐率越大,單位時(shí)間內(nèi)處理的數(shù)據(jù)就越多,系統(tǒng)的負(fù)載能力也強(qiáng)。吞吐率與很多因素有關(guān),服務(wù)器的硬件配置,網(wǎng)絡(luò)的寬帶及拓?fù)浣Y(jié)構(gòu),軟件的技術(shù)架構(gòu)等。 - 業(yè)務(wù)成功率
指多用戶對(duì)某一業(yè)務(wù)發(fā)起操作的成功率。例如,測(cè)試網(wǎng)絡(luò)訂票系統(tǒng)的并發(fā)處理性能,在早上8:00——8:30半小時(shí)的高峰里,要求能支持10萬比訂票業(yè)務(wù),其中成功率不少于98%。也就是說系統(tǒng)允許200筆訂票業(yè)務(wù)超時(shí)或者因其他原因?qū)е挛茨苡喥背晒Α?/li> - TPS - 吞吐量
TPS表示服務(wù)器每秒處理的事務(wù)數(shù),他是衡量系統(tǒng)處理能力的一個(gè)非常重要的指標(biāo),在性能測(cè)試中,通過檢測(cè)不同用戶的TPS,可以估算出系統(tǒng)處理能力的拐點(diǎn)。 - 資源利用率
資源利用率就是指資源的使用情況
CPU使用率70%—80%,內(nèi)存使用率80%以下
網(wǎng)絡(luò)帶寬利用率 100Mbps=12.5MB/s - QPS - 查詢率
QPS:每秒查詢率,因特網(wǎng)上經(jīng)常用每秒查詢率來衡量域名系統(tǒng)服務(wù)器的機(jī)器的能。
對(duì)應(yīng)請(qǐng)求數(shù)/sec,即每秒的響應(yīng)請(qǐng)求數(shù),也即是最大吞吐能力。 - 錯(cuò)誤率:一批請(qǐng)求中結(jié)果出錯(cuò)的請(qǐng)求所占比例。
如果你要進(jìn)行性能測(cè)試,你是如何展開操作的?
- 確定關(guān)鍵業(yè)務(wù),關(guān)鍵路徑
- 確定輸入?yún)?shù)以及輸出參數(shù),指定負(fù)載測(cè)試方案
- 準(zhǔn)備測(cè)試環(huán)境,完成腳本錄制,或者測(cè)試腳本開發(fā),
- 執(zhí)行測(cè)試,觀察或輸出參數(shù),如(數(shù)據(jù)吞吐量,響應(yīng)時(shí)間,資源占有率等)
- 對(duì)測(cè)試結(jié)果進(jìn)行分析
安全性測(cè)試包括哪些方面?
用戶驗(yàn)證,用戶權(quán)限管理,系統(tǒng)數(shù)據(jù)的保護(hù)