前言
談起性能測試蟹漓,大家經(jīng)常聊的是高并發(fā)炕横、高可用、性能優(yōu)化葡粒、全鏈路壓測等Topic份殿,聽起來都挺高大上,但這些概念追本溯源嗽交,還是要落到性能測試基礎(chǔ)的東西上卿嘲。比如需求分析、場景建模夫壁、測試方案拾枣、性能分層、指標(biāo)監(jiān)控盒让、結(jié)果評估和優(yōu)化本身上面梅肤。在上家公司離職前一天,我給測試同學(xué)做了一場性能測試基礎(chǔ)知識(shí)分享和全鏈路壓測演進(jìn)的分享邑茄,這篇文章姨蝴,整理了基礎(chǔ)部分的一些知識(shí)和我自己的思考,供大家參考肺缕。
思維導(dǎo)圖
知識(shí)體系
基礎(chǔ)指標(biāo)
簡單來說左医,性能測試實(shí)際上主要關(guān)注如下三點(diǎn):
速度:TPS授帕、RT ;
容量:吞吐量炒辉、PV豪墅、Hit;
資源:CPU黔寇、Memory偶器、DiskIO、Network缝裤、文件句柄數(shù)屏轰;
性能分層
性能測試領(lǐng)域,要在評估調(diào)研階段就考慮性能分層的影響憋飞。在性能分析和優(yōu)化階段霎苗,也要考慮不同層級(jí)對整體性能的影響。我將它們分為如下六層:
網(wǎng)絡(luò)層:主要指帶寬榛做、網(wǎng)段唁盏、防火墻等設(shè)施,當(dāng)然检眯,CND之類的資源厘擂,也可以劃分在這一領(lǐng)域;
網(wǎng)關(guān)層:網(wǎng)關(guān)是請求入口和業(yè)務(wù)接入層锰瘸,一般登錄驗(yàn)簽調(diào)用刽严、加解密鑒權(quán)、限流等操作避凝,都是在網(wǎng)關(guān)進(jìn)行舞萄;
應(yīng)用層:無論是前端的渲染展示還是后端的邏輯處理,都可以理解為應(yīng)用層管削;
中間件:中間件包含緩存倒脓、MQ、JOB含思、DTS/DRC/DAL把还、配置中心等一系列組件;
存儲(chǔ)層:一般指數(shù)據(jù)存儲(chǔ)和文件存儲(chǔ)層級(jí)茸俭,典型的組件有MySQL吊履、HDFS;
物理層:無論是云服務(wù)還是自建機(jī)房调鬓,物理硬件層面都可以歸納到這一層艇炎;
需求調(diào)研
項(xiàng)目背景
版本迭代&獨(dú)立項(xiàng)目&新建服務(wù)&系統(tǒng)重構(gòu)&性能優(yōu)化;
測試目的
超賣&高并發(fā)&擴(kuò)容性&配置驗(yàn)證&資源耗用腾窝;
系統(tǒng)架構(gòu)
技術(shù)架構(gòu):服務(wù)間的依賴關(guān)系缀踪,包含緩存居砖,MQ等信息;
網(wǎng)絡(luò)拓?fù)洌赫埱?域名-SLB/HA/Nginx-web-app-DB以及外部依賴驴娃;
場景模型
業(yè)務(wù)場景:業(yè)務(wù)場景的多樣性和特殊性以及對腳本開發(fā)聯(lián)調(diào)&數(shù)據(jù)預(yù)埋的影響奏候;
業(yè)務(wù)模型:只讀、讀寫唇敞、批處理蔗草、定時(shí)Job;
業(yè)務(wù)配比:被測場景占總體場景的業(yè)務(wù)量占比(公式:被測場景/總業(yè)務(wù)量*100%)
選取業(yè)務(wù)峰值的數(shù)據(jù)疆柔,單獨(dú)統(tǒng)計(jì)咒精;
如果各業(yè)務(wù)占比類似,則按照比例轉(zhuǎn)化旷档;
如果比例差距大模叙,則按照區(qū)間單獨(dú)統(tǒng)計(jì)分析;
環(huán)境配置
PRE&PERF鞋屈、app&Redis&MQ&DB&網(wǎng)絡(luò)&網(wǎng)段&&帶寬&防火墻范咨,是否獨(dú)享資源隔離等;
性能指標(biāo)
業(yè)務(wù)指標(biāo):DAU厂庇、GMV渠啊、注冊用戶數(shù)、在線用戶數(shù)宋列、活躍用戶數(shù)昭抒、增長趨勢等评也;
系統(tǒng)指標(biāo):協(xié)議類型炼杖、長短鏈接、同步策略盗迟、加解密坤邪、JVM內(nèi)存分配、容器線程數(shù)&連接數(shù)&Timeout罚缕、MQ-Cousumer數(shù)量艇纺;
壓測指標(biāo):QPS、TPS邮弹、ART黔衡、99%RT、Success%腌乡;
數(shù)據(jù)類型
數(shù)據(jù)鋪底量盟劫;
是否有敏感數(shù)據(jù)需脫敏;
限制條件(時(shí)間&次數(shù)&權(quán)限)与纽;
自增侣签、唯一塘装、UUID、加解密影所、冪等蹦肴;
關(guān)鍵時(shí)間
提測時(shí)間、驗(yàn)收時(shí)間猴娩、上線時(shí)間阴幌;
這里給大家準(zhǔn)備了我從大學(xué)到大廠工作的軟件測試資料,無償分享給大家胀溺,需要的可以自取wenruo.ysepan.com
模型場景
業(yè)務(wù)模型:業(yè)務(wù)場景裂七、流量轉(zhuǎn)化漏斗;
測試模型:關(guān)注核心場景仓坞,過濾無關(guān)及非核心業(yè)務(wù)背零;
場景模型:從系統(tǒng)架構(gòu)設(shè)計(jì)層面出發(fā),關(guān)注不同層面无埃,提升性能徙瓶!
基準(zhǔn):單機(jī)單服務(wù)單接口;
并發(fā):設(shè)定閾值嫉称,觀察水位侦镇;
容量:階梯式加壓、性能拐點(diǎn)织阅、資源瓶頸壳繁;
異常:容錯(cuò)處理、監(jiān)控告警荔棉、容災(zāi)恢復(fù)演練闹炉;
穩(wěn)定性:長期穩(wěn)定正確提供服務(wù)的能力,可用性SLA润樱;
測試方案
項(xiàng)目背景:說明項(xiàng)目開展的背景及目的渣触;
測試方案:針對項(xiàng)目涉及的場景,測試實(shí)施的大體方案壹若;
實(shí)施準(zhǔn)則:任何項(xiàng)目嗅钻,都要有準(zhǔn)入準(zhǔn)出和暫停中止準(zhǔn)則;
性能模型:針對具體的場景店展,設(shè)計(jì)的性能模型最好經(jīng)過評估驗(yàn)證养篓;
測試策略:針對測試模型所采用的不同的測試策略,同步的測試策略要達(dá)成什么樣的目的赂蕴;
性能指標(biāo):業(yè)務(wù)指標(biāo)是多少柳弄?轉(zhuǎn)化的技術(shù)指標(biāo)是多少?冗余范圍有多大睡腿?
準(zhǔn)備工作:其中包含環(huán)境语御、數(shù)據(jù)峻贮、腳本、監(jiān)控等準(zhǔn)備事項(xiàng)应闯;
組織結(jié)構(gòu):整個(gè)項(xiàng)目中涉及哪些事項(xiàng)纤控?不同事項(xiàng)的負(fù)責(zé)人是誰?交付時(shí)間是什么時(shí)候碉纺?
結(jié)果評估
在性能測試實(shí)施過程中船万,準(zhǔn)確定義和描述性能測試結(jié)果,及針對不同結(jié)果進(jìn)行模型分析骨田,是很重要的一項(xiàng)能力耿导。
性能實(shí)施方法論
基于指標(biāo)構(gòu)建;
建模是分析的過程和結(jié)果态贤;
基于真實(shí)環(huán)境的系統(tǒng)模擬舱呻;
壓測實(shí)施過程是整體的核心;
需要設(shè)定統(tǒng)一的目標(biāo)悠汽、流程箱吕、分析方法、組織結(jié)構(gòu)柿冲;
正確描述性能結(jié)果和過程的術(shù)語
瓶頸描述:什么場景執(zhí)行了什么策略/操作茬高,因?yàn)槭裁丛驅(qū)е铝耸裁?strong>結(jié)果;
解決方案:優(yōu)化了哪里假抄?驗(yàn)證的方式及結(jié)果怎栽?是否滿足預(yù)期&是否解決了發(fā)現(xiàn)的問題?
性能分析層級(jí)
業(yè)務(wù)分級(jí):業(yè)務(wù)-場景-數(shù)據(jù)-架構(gòu)-參數(shù)宿饱;
技術(shù)分級(jí):引擎-網(wǎng)絡(luò)-應(yīng)用-中間件-數(shù)據(jù)庫熏瞄;
工具:關(guān)注指標(biāo),從結(jié)果反推過程刑棵;
配置:線程巴刻、連接數(shù)愚铡、Timeout蛉签、長短鏈接、同步異步沥寥、路由轉(zhuǎn)發(fā)碍舍;
應(yīng)用:日志、硬件配置邑雅、資源使用率片橡;
中間件:Job、緩存命中淮野、消息堆積捧书、Consumer配置吹泡;
數(shù)據(jù)庫:資源耗用、庫表結(jié)構(gòu)经瓷、表鎖行鎖爆哑、活躍連接數(shù)、最大連接數(shù)舆吮;
性能拐點(diǎn)
TPS增長放緩揭朝,RT快速上升;
性能交叉點(diǎn)
模型上的TPS和RT交叉節(jié)點(diǎn)色冀;
性能平衡點(diǎn)
重點(diǎn)關(guān)注業(yè)務(wù)可接受的最大RT潭袱;
性能衰減點(diǎn)
timeout參數(shù)&TPS急劇惡化抖降&RT快速飆升;
腳本設(shè)計(jì)
什么時(shí)候需要做腳本關(guān)聯(lián)锋恬?
服務(wù)端結(jié)果動(dòng)態(tài)返回屯换,非冪等;
response body的參數(shù)需要向下透傳与学;
如何理解并發(fā)和事務(wù)的區(qū)別趟径?
并發(fā)指的是同一時(shí)刻服務(wù)端接收到的請求數(shù),而非壓測引擎的并發(fā)線程/RPS癣防;
thinktime怎么用蜗巧?
它有什么效果?
是否存在真實(shí)的業(yè)務(wù)場景蕾盯?
是否影響整體的壓測場景和服務(wù)資源幕屹?
主要關(guān)注哪些指標(biāo)?
并發(fā)數(shù)级遭、TPS望拖、ART、99%RT挫鸽、CPU%说敏、Memory%、systemLoad%丢郊;
典型特例
文件存儲(chǔ)優(yōu)化
原理:文件/圖片存儲(chǔ)在源節(jié)點(diǎn)盔沫,利用CDN緩存各種變更和路徑。CDN未命中枫匾,回源節(jié)點(diǎn)處理并返回架诞,同時(shí)同步最新的變更和路徑到CDN。
優(yōu)點(diǎn):節(jié)省存儲(chǔ)成本干茉,提高查詢展示渲染性能谴忧,靈活滿足業(yè)務(wù)。
注意事項(xiàng):大文件分塊存儲(chǔ),避免局部過熱導(dǎo)致單機(jī)磁盤IO過載沾谓,分塊有助于整體系統(tǒng)資源調(diào)度委造。
秒殺超賣場景
適用場景:秒殺、限時(shí)搶購均驶、限量搶購等争涌。
單用戶單端多次搶購;
單用戶單端限量搶購辣恋;
單用戶多端搶購→低并發(fā)亮垫;
-
單用戶多端搶購→高并發(fā);
這里給大家準(zhǔn)備了我從大學(xué)到大廠工作的軟件測試資料伟骨,無償分享給大家饮潦,需要的可以點(diǎn)擊自取wenruo.ysepan.com