作者:Gakki
基礎概念:HPS赖阻、TPS蝶押、QPS、RPS火欧、RT棋电、并發(fā)用戶數(shù)概念?簡要介紹苇侵?
HPS(Hits Per Second):每秒點擊次數(shù)赶盔,單位是次/秒。
TPS(Transaction per Second):系統(tǒng)每秒處理事務數(shù)榆浓,簡稱TPS, 每秒事務數(shù), 是衡量系統(tǒng)性能的一個非常重要的指標于未。
QPS(Query per Second):系統(tǒng)每秒處理查詢次數(shù),單位是次/秒。對于互聯(lián)網業(yè)務中烘浦,如果某些業(yè)務有且僅有一個請求連接抖坪,那么TPS=QPS=HPS,一般情況下用TPS來衡量整個業(yè)務流程闷叉,用QPS來衡量接口查詢次數(shù)擦俐,用HPS來表示對服務器點擊請求
RPS 即每秒請求數(shù)(Request Per Second),通常用來描述施壓引擎實際發(fā)出的壓力大小握侧。PS:并發(fā)數(shù)過低時可能達不到預期的 RPS蚯瞧,并發(fā)數(shù)過高時可能壓力過大壓垮服務器
并發(fā)用戶數(shù):簡稱VU ,指的是現(xiàn)實系統(tǒng)中操作業(yè)務的用戶,在性能測試工具中品擎,一般稱為虛擬用戶數(shù)(Virutal User)埋合,注意并發(fā)用戶數(shù)跟注冊用戶數(shù)、在線用戶數(shù)有很大差別的萄传,并發(fā)用戶數(shù)一定會對服務器產生壓力的饥悴,而在線用戶數(shù)只是 ”掛” 在系統(tǒng)上,對服務器不產生壓力盲再,注冊用戶數(shù)一般指的是數(shù)據庫中存在的用戶數(shù)。
響應時間:簡稱RT,指的是業(yè)務從客戶端發(fā)起到客戶端接受的時間瓣铣。
壓測工具答朋?你主要看哪些指標?
壓測工具:jmeter
Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性棠笑,這里顯示的就是 Name 屬性的值
# Samples:表示你這次測試中一共發(fā)出了多少個請求梦碗,如果模擬10個用戶,每個用戶迭代10次蓖救,那么這里顯示100
Average:平均響應時間——默認情況下是單個 Request 的平均響應時間洪规,當使用了 Transaction Controller 時,也可以以Transaction 為單位顯示平均響應時間
Median:中位數(shù)循捺,也就是 50% 用戶的響應時間
90% Line:90% 用戶的響應時間
Note:關于 50% 和 90% 并發(fā)用戶數(shù)的含義
Min:最小響應時間
Max:最大響應時間
Error%:本次測試中出現(xiàn)錯誤的請求的數(shù)量/請求的總數(shù)
Throughput:吞吐量——默認情況下表示每秒完成的請求數(shù)(Request per Second)斩例,當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數(shù)
KB/Sec:每秒從服務器端接收到的數(shù)據量从橘,相當于LoadRunner中的Throughput/Sec
性能測試中TPS上不去的幾種原因淺析念赶?
TPS(Transaction Per Second):每秒事務數(shù),指服務器在單位時間內(秒)可以處理的事務數(shù)量恰力,一般以request/second為單位叉谜。
- 網絡帶寬。在壓力測試中踩萎,有時候要模擬大量的用戶請求停局,如果單位時間內傳遞的數(shù)據包過大,超過了帶寬的傳輸能力,那么就會造成網絡資源競爭董栽,間接導致服務端接收到的請求數(shù)達不到服務端的處理能力上限码倦。
- 連接池●捎荆可用的連接數(shù)太少叹洲,造成請求等待。連接池一般分為服務器連接池(比如Tomcat)和數(shù)據庫連接池(或者理解為最大允許連接數(shù)也行)工禾。
- 垃圾回收機制运提。從常見的應用服務器來說,比如Tomcat闻葵,因為java的的堆棧內存是動態(tài)分配民泵,具體的回收機制是基于算法,如果新生代的Eden和Survivor區(qū)頻繁的進行Minor GC槽畔,老年代的full GC也回收較頻繁栈妆,那么對TPS也是有一定影響的,因為垃圾回收其本身就會占用一定的資源厢钧。
- 數(shù)據庫配置鳞尔。高并發(fā)情況下,如果請求數(shù)據需要寫入數(shù)據庫早直,且需要寫入多個表的時候寥假,如果數(shù)據庫的最大連接數(shù)不夠,或者寫入數(shù)據的SQL沒有索引沒有綁定變量霞扬,抑或沒有主從分離糕韧、讀寫分離等,就會導致數(shù)據庫事務處理過慢喻圃,影響到TPS萤彩。
- 通信連接機制。串行斧拍、并行雀扶、長連接、管道連接等肆汹,不同的連接情況怕吴,也間接的會對TPS造成影響。
- 硬件資源县踢。包括CPU(配置转绷、使用率等)、內存(占用率等)硼啤、磁盤(I/O议经、頁交換等)。
- 壓力機。比如jmeter煞肾,單機負載能力有限咧织,如果需要模擬的用戶請求數(shù)超過其負載極限,也會間接影響TPS(這個時候就需要進行分布式壓測來解決其單機負載的問題)籍救。
- 壓測腳本习绢。還是以jemter舉個例子,之前工作中同事遇到的蝙昙,進行階梯式加壓測試闪萄,最大的模擬請求數(shù)超過了設置的線程數(shù),導致線程不足奇颠。提到這個原因败去,想表達意思是:有時候測試腳本參數(shù)配置等原因,也會影響測試結果烈拒。
- 業(yè)務邏輯圆裕。業(yè)務解耦度較低,較為復雜荆几,整個事務處理線被拉長導致的問題吓妆。
- 系統(tǒng)架構。比如是否有緩存服務吨铸,緩存服務器配置耿战,緩存命中率、緩存穿透以及緩存過期等焊傅,都會影響到測試結果。
性能測試場景設置思路狈涮?
無論并發(fā)模式還是TPS模式狐胎,場景就是一個壓測模型,壓測模型中有串行的事務(如添加購物車+購物車下單+付款)也有并行的接口(在不同串聯(lián)鏈路中的壓測API)歌馍,最終組成一個復雜或者簡單的場景握巢。然后根據新業(yè)務上線的目標、或者日常峰值的等比例目標松却、或者重大業(yè)務活動的預估支撐能力去設置每個API的目標能力(TPS是一步到位的按照吞吐能力設置的暴浦,推薦TPS模式,比如前面提到的添加購物車+購物車下單+付款這種流程就是一個漏斗模型晓锻,TPS設置為逐漸變小的模型即可)歌焦,當然也可以在初期的測試中更謹慎一點,將目標量級設置得整體低一點砚哆,當最終能力達到之后建議可以調整原定目標量級到120%或者150%独撇,驗證限流準入/高可用基礎設施的抗壓能力。目標量級即當前壓測場景中這個壓測API的施壓上限。而起步量級可以從5%或者10%開始纷铣,過程中視業(yè)務指標數(shù)據和被壓測端的整體負載臨時調整卵史。
對服務器性能測試的看法?
針對服務器端的性能搜立,以TPS為主來衡量系統(tǒng)的性能以躯,并發(fā)用戶數(shù)為輔來衡量系統(tǒng)的性能,如果必須要用并發(fā)用戶數(shù)來衡量的話啄踊,需要一個前提忧设,那就是交易在多長時間內完成,因為在系統(tǒng)負載不高的情況下社痛,將思考時間(思考時間的值等于交易響應時間)加到串聯(lián)鏈路(場景)中见转,并發(fā)用戶數(shù)基本可以增加一倍,因此用并發(fā)用戶數(shù)來衡量系統(tǒng)的性能沒太大的意義蒜哀。同樣的斩箫,如果系統(tǒng)間的吞吐能力差別很大,那么同樣的并發(fā)下TPS差距也會很大撵儿。
系統(tǒng)的性能決定的要素乘客?跟并發(fā)用戶數(shù)的關系?
由TPS決定淀歇,跟并發(fā)用戶數(shù)沒有多大關系易核。
系統(tǒng)的最大TPS是一定的(在一個范圍內),但并發(fā)用戶數(shù)不一定浪默,可以調整牡直。
建議性能測試的時候,不要設置過長的思考時間纳决,以最壞的情況下對服務器施壓碰逸。
Jmeter的工作原理是什么?
jmeter可以作為web服務器與瀏覽器直接的代理網關阔加,以便捕獲瀏覽器的請求和web服務器的響應饵史,如此就可以很容易地生成性能測試腳本。有了性能測試腳本胜榔,jmeter就可以通過線程來模擬真實用戶對web服務器的訪問壓力胳喷。這與LoadRunner的工作原理基本一致。
你常用的元件夭织、各自的作用是什么吭露?
- 測試計劃(Test Plan)是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器尊惰。
- 線程組(Thread Group)代表一定數(shù)量的并發(fā)用戶奴饮,它可以用來模擬并發(fā)用戶發(fā)送請求纬向。
- 取樣器(sampler)定義實際的請求內容,被線程組包含戴卜,我們主要用HTTP請求逾条。
- 監(jiān)聽器(Listener)
- 邏輯控制器(Logic Controller)
- 斷言(Assertions)
- 配置元件(Config Element)
- 前置處理器(Pre Processors)和后置處理器(Post Processors)
- 定時器(Timer)
前端的性能應該從哪些方面去測試?應該關注哪些指標投剥?
- 使用的一些工具
- 查看靜態(tài)資源
- JS师脂、CSS等資源加載速度
- 頁面渲染
- 不同瀏覽器上加載速度
什么是緩存?
緩存就是在內存中存儲的數(shù)據備份江锨,當數(shù)據沒有發(fā)生本質變化的時候吃警,我們避免數(shù)據的查詢操作直接連接數(shù)據庫,而是去 內容中讀取數(shù)據啄育,這樣就大大降低了數(shù)據庫的讀寫次數(shù)酌心,而且從內存中讀數(shù)據的速度要比從數(shù)據庫查詢要快很多。
什么是Redis挑豌?
1)Redis不僅僅支持簡單的k/v類型的數(shù)據安券,同時還提供list,set氓英,zset侯勉,hash等數(shù)據結構的存儲。
2)Redis支持master-slave(主-從)模式應用
3)Redis支持數(shù)據持久化铝阐,可以將內存中的數(shù)據保持在磁盤中址貌,重啟的時候可以再次加載進行使用。
4)Redis單個value的最大限制是1GB徘键,memcached只能保存1MB的數(shù)據练对。
什么是全鏈路壓測?
基于實際的生產業(yè)務場景吹害、系統(tǒng)環(huán)境螟凭,模擬海量的用戶請求和數(shù)據對整個業(yè)務鏈進行壓力測試,并持續(xù)調優(yōu)的過程
性能測試關注的指標是什么赠制?
- 用戶數(shù)
- ①注冊用戶數(shù)
注冊用戶數(shù)指軟件中已經注冊的用戶,這些用戶是系統(tǒng)的潛在用戶挟憔,隨時都有可能上線钟些。這個指標的意義在于讓測試工程師了解系統(tǒng)數(shù)據中的數(shù)據總量和系統(tǒng)最大可能有多少用戶同時在線。 - ②在線用戶數(shù)
在線用戶數(shù)是指某一時刻已經登錄系統(tǒng)的用戶數(shù)量绊谭。在線用戶數(shù)只是統(tǒng)計了登錄系統(tǒng)的用戶數(shù)量政恍,這些用戶不一定都對系統(tǒng)進行操作,對服務器產生壓力达传。 - ③并發(fā)用戶數(shù)
不同于在線用戶數(shù)篙耗,并發(fā)用戶數(shù)是指某一時刻向服務器發(fā)送請求的在線用戶數(shù)迫筑,他是衡量服務器并發(fā)容量和同步協(xié)調能力的重要指標,從這個含義上講宗弯,我們可能會如下兩種理解:
同一時刻向服務器發(fā)送相同或者不同請求的用戶數(shù)脯燃,也就是說,既可以包括對某一業(yè)務的相同請求蒙保,也可以包括對多個業(yè)務的不同請求
同一時刻向服務器發(fā)送相同請求的用戶數(shù)辕棚,僅限于某一業(yè)務的相同請求
- 事務的響應時間
事務是指用戶在客戶端做一種或多種業(yè)務所做的操作集,事務的響應時間就是衡量用戶執(zhí)行這些操作集所花費的時間邓厕。在性能測試中逝嚎,一般通過計算事務的開始時間和結束時間的差值來獲取事務的響應時間。
一個事務表示一個“從用戶發(fā)送請求->web server接受到請求详恼,進行處理-> web server向DB獲取數(shù)據->生成用戶的object(頁面)补君,返回給用戶”的過程,一般的響應時間都是針對事務而言的昧互。 - 每秒點擊數(shù)
每秒點擊數(shù)是指每秒鐘像web服務器提交的HTTP請求數(shù)挽铁,它是衡量服務器處理能力的一個常用指標。需要注意的是硅堆,這里的相應時間并非鼠標的一次單擊操作屿储,因為在一次單擊操作中,客戶端可能向服務器發(fā)出多個HTTP請求渐逃,切勿混淆够掠。 - 吞吐率
吞吐率通常指單位時間內從服務器返回的字節(jié)數(shù),也可以單位時間內客戶提交的請求數(shù)茄菊。吞吐率是大型web系統(tǒng)衡量自身負載能力的一個重要指標疯潭,一般來說,吞吐率越大面殖,單位時間內處理的數(shù)據就越多竖哩,系統(tǒng)的負載能力也強。吞吐率與很多因素有關脊僚,服務器的硬件配置相叁,網絡的寬帶及拓撲結構,軟件的技術架構等辽幌。 - 業(yè)務成功率
指多用戶對某一業(yè)務發(fā)起操作的成功率增淹。例如,測試網絡訂票系統(tǒng)的并發(fā)處理性能乌企,在早上8:00——8:30半小時的高峰里虑润,要求能支持10萬比訂票業(yè)務,其中成功率不少于98%加酵。也就是說系統(tǒng)允許200筆訂票業(yè)務超時或者因其他原因導致未能訂票成功拳喻。 - TPS - 吞吐量
TPS表示服務器每秒處理的事務數(shù)哭当,他是衡量系統(tǒng)處理能力的一個非常重要的指標,在性能測試中冗澈,通過檢測不同用戶的TPS,可以估算出系統(tǒng)處理能力的拐點钦勘。 - 資源利用率
資源利用率就是指資源的使用情況
CPU使用率70%—80%,內存使用率80%以下
網絡帶寬利用率 100Mbps=12.5MB/s - QPS - 查詢率
QPS:每秒查詢率渗柿,因特網上經常用每秒查詢率來衡量域名系統(tǒng)服務器的機器的能个盆。
對應請求數(shù)/sec,即每秒的響應請求數(shù)朵栖,也即是最大吞吐能力颊亮。 - 錯誤率:一批請求中結果出錯的請求所占比例。
如果你要進行性能測試陨溅,你是如何展開操作的终惑?
- 確定關鍵業(yè)務,關鍵路徑
- 確定輸入參數(shù)以及輸出參數(shù)门扇,指定負載測試方案
- 準備測試環(huán)境雹有,完成腳本錄制,或者測試腳本開發(fā)臼寄,
- 執(zhí)行測試霸奕,觀察或輸出參數(shù),如(數(shù)據吞吐量吉拳,響應時間质帅,資源占有率等)
- 對測試結果進行分析
安全性測試包括哪些方面?
用戶驗證留攒,用戶權限管理煤惩,系統(tǒng)數(shù)據的保護