????????進(jìn)程相當(dāng)于馬路矮固,線程相當(dāng)于汽車
????????jmeter-server 分布式 每一臺(tái)機(jī)器能創(chuàng)建多少用戶數(shù)--內(nèi)存(物理內(nèi)存)
????????jmeter 一個(gè)java進(jìn)程,進(jìn)程需要一定內(nèi)存資源---堆內(nèi)存
????????JMETER_HOME PATH 兩個(gè)路徑的配置树枫,輸入jmeter,可以通過命令行打開jmeter景东,盡量不要用gui模式執(zhí)行性能測(cè)試砂轻,因?yàn)闀?huì)占資源
????????jmeter語(yǔ)言的永久設(shè)置 在jmeter_properties文件中指定language為zh_CN
????????在查看結(jié)果樹里可以指定執(zhí)行結(jié)果數(shù)據(jù)的保存文件
????????聚合報(bào)告的tools下拉菜單有生成可以生成html報(bào)告的選項(xiàng)
????????setup線程組 初始化? 線程組? teardown線程組
????????監(jiān)控平臺(tái)、性能瓶頸分析斤吐、真實(shí)環(huán)境聯(lián)系搔涝、性能分析報(bào)告編寫
????????1個(gè)是功能 n個(gè)是性能,覆蓋重要場(chǎng)景 從1到n
????????漂亮的jmeter腳本:準(zhǔn)確和措、快速庄呈、漂亮
????????接口請(qǐng)求的獲取:文檔派阱、抓包诬留、jmeter代理錄制腳本
????????對(duì)jmeter的測(cè)試計(jì)劃右鍵,添加非測(cè)試組件的http代理,在瀏覽器的設(shè)置-高級(jí)-系統(tǒng)-打開計(jì)算機(jī)的代理設(shè)置文兑,將代理地址改為本機(jī)的127.0.0.1 8888(這之前需要在瀏覽器設(shè)置中導(dǎo)入jmeter的證書在bin下)盒刚,打開系統(tǒng)代理設(shè)置,并導(dǎo)入jmeter bin目錄下的證書文件绿贞。點(diǎn)擊啟動(dòng)代理后因块,即可以開始錄制。
????????jmeter4點(diǎn)幾版本的不支持代理錄制籍铁,錄制的時(shí)候會(huì)報(bào)錯(cuò)
????????jmeter是多線程模式
????????請(qǐng)求頭管理器贮聂、cookies管理器、請(qǐng)求默認(rèn)值寨辩、響應(yīng)斷言吓懈、錯(cuò)誤請(qǐng)求的記錄通過勾選察看結(jié)果樹中的
????????錯(cuò)誤選項(xiàng)來看、聚合報(bào)告靡狞、用表格查看報(bào)告(可以看發(fā)起時(shí)間)耻警、圖形結(jié)果,根據(jù)實(shí)際需要選擇查看器類型甸怕「蚀可以選擇返回結(jié)果的展示形式為jsonpath,方便查看梢杭。
????????按照從上到下的順序執(zhí)行腳本温兼,控件作用域與放置位置有關(guān)。
????????前置處理器武契、后置處理器募判、分別指請(qǐng)求發(fā)之前和之后的處理器。比如加密 md5為前置咒唆,提取數(shù)據(jù)為后置届垫。另外還有定時(shí)器、斷言
????????思考時(shí)間-固定定時(shí)器 每個(gè)請(qǐng)求中間加一個(gè)等待時(shí)間
????????同步定時(shí)器-集合點(diǎn) 所有的請(qǐng)求集合好之后全释,高并發(fā)同時(shí)訪問
????????隨機(jī)定時(shí)器-時(shí)間隨機(jī)
????????吞吐量定時(shí)器-分流效果
????????參數(shù)化技術(shù)装处,找到需要參數(shù)化的數(shù)據(jù)、準(zhǔn)備數(shù)據(jù)源浸船、將常量替換為變量妄迁。csv、函數(shù)式李命、隨機(jī)數(shù)登淘、time 時(shí)間戳、counter計(jì)數(shù)器项戴、變量 即用戶自定義的變量形帮、編程式引入外部的jar槽惫、java、class辩撑、使用beanshell編程界斜,用到數(shù)據(jù)文件最好放到bin文件下,這樣方便他人使用不會(huì)存在路徑問題合冀。
????????json提取器各薇,增加變量名,$.json的字段值
????????報(bào)必須為中文錯(cuò)誤時(shí)君躺,將編碼設(shè)置為utf-8
????????函數(shù)生成器峭判,可以生成隨機(jī)變量表達(dá)式,點(diǎn)擊生成后復(fù)制到對(duì)應(yīng)的位置使用即可棕叫,如模擬手機(jī)號(hào)后8位信息的${__Random(1111111,99999999,)}
????????關(guān)聯(lián)技術(shù)林螃,目的是提取,斷言的主要目的是對(duì)比俺泣。
????????正則表達(dá)式:()括起來的部分就是要提取的 .匹配任何字符 +一次貨多次 ?不要貪婪疗认,找到第一個(gè)就停止。如提取value="readme.txt" 的正則表達(dá)式為value="(.+?)" 多個(gè)可以多次提取伏钠,$1$ $2$分別代表第一個(gè)提取的值和第二個(gè)提取的值横漏,提取到之后可以使用MYREF g g0 g1,在debug處理器中可以看到對(duì)應(yīng)的取值 熟掂。
????????獲取html頁(yè)面的title缎浇、response中的參數(shù),通過添加debug處理器可以查看變量的取出情況赴肚。
????????synchronizing timer 同步定時(shí)器素跺,可以形成集合點(diǎn)。在表格查看的記錄中可以看到時(shí)間值是一樣的尊蚁,默認(rèn)的用戶數(shù)值0表示全部 亡笑,超時(shí)時(shí)間為0表示沒有超時(shí)時(shí)間。用戶數(shù)不能超過線程中設(shè)置的最大用戶數(shù)横朋,超過了就會(huì)一直等待。如果小于線程中的用戶數(shù)百拓,且達(dá)不到下一輪的集合用戶數(shù)琴锭,就會(huì)出現(xiàn)一直等待的情況,這種情況可以通過設(shè)置超時(shí)時(shí)間來執(zhí)行最后的用戶的集合點(diǎn)并執(zhí)行結(jié)束該任務(wù)衙传。
????????僅一次控制器的加入决帖,可以控制某些請(qǐng)求在一次線程里只請(qǐng)求一次。如線程的用戶數(shù)為2蓖捶,循環(huán)次數(shù)為2地回,那么每次循環(huán),它只會(huì)執(zhí)行一次,循環(huán)兩次刻像。
????????性能指標(biāo)分析:多畅买、快、好细睡、省谷羞。功能講究覆蓋率,性能講究高頻溜徙,提取核心業(yè)務(wù)湃缎、高頻業(yè)務(wù)、扎堆場(chǎng)景蠢壹。了解業(yè)務(wù)場(chǎng)景嗓违、了解項(xiàng)目部署架構(gòu)。
????????性能指標(biāo):用戶數(shù)图贸、響應(yīng)時(shí)間靠瞎、TPS、錯(cuò)誤率求妹、服務(wù)器資源乏盐。
????????性能場(chǎng)景指標(biāo):驗(yàn)證最大在線用戶數(shù)--(負(fù)載測(cè)試邏輯) 錯(cuò)誤率<5% 請(qǐng)求響應(yīng)時(shí)間<5s 場(chǎng)景運(yùn)行10分鐘--不加同步定時(shí)器 服務(wù)器資源使用合理:cpu使用率<80% 內(nèi)存使用率<80%
????????如果遇到登錄需要單點(diǎn),那么就需要在數(shù)據(jù)庫(kù)里面創(chuàng)建一批用戶
????????確認(rèn)需要參數(shù)化的數(shù)據(jù)制恍,準(zhǔn)備好參數(shù)化的數(shù)據(jù)源父能,腳本中的常量改成變量。jmeter可以調(diào)用java開發(fā)的.class或.jar來進(jìn)行加密計(jì)算净神。csv加密何吝、函數(shù)加密、計(jì)數(shù)器加密鹃唯。
????????搭建監(jiān)控環(huán)境爱榕、運(yùn)行場(chǎng)景、監(jiān)控與分析坡慌、性能調(diào)優(yōu)黔酥、回歸測(cè)試優(yōu)化后的效果、測(cè)試報(bào)告洪橘。
????????獨(dú)立運(yùn)行每個(gè)線程組選項(xiàng)不勾的時(shí)候跪者,表示所有線程會(huì)一起執(zhí)行,勾了就會(huì)逐個(gè)執(zhí)行熄求。
????????用戶自定義變量是全局的(整個(gè)測(cè)試計(jì)劃通用)渣玲,沒有作用域,定時(shí)器弟晚、斷言忘衍、監(jiān)聽器都是有作用域的逾苫。
????????200請(qǐng)求成功 302重定向 404請(qǐng)求資源不存在 500服務(wù)器內(nèi)部錯(cuò)誤(如數(shù)據(jù)庫(kù)掛了)
????????如果請(qǐng)求2個(gè)接口中間要等待幾秒,那么在第二個(gè)請(qǐng)求上加個(gè)固定定時(shí)器枚钓。
????????持續(xù)時(shí)間和循環(huán)永遠(yuǎn)要搭配使用铅搓,否則持續(xù)時(shí)間不生效
????????線程數(shù)除以ramp-up時(shí)間是每秒的并發(fā)數(shù),teardown線程組的配置數(shù)量要和普通線程一樣秘噪,setup的使用默認(rèn)的就可以狸吞,勾選只顯示錯(cuò)誤,避免并發(fā)量大的情況下錯(cuò)誤信息被刷掉指煎。
????????grafana性能監(jiān)控 數(shù)據(jù)采集node_exporter 9100蹋偏、mysql_exporter 9104、數(shù)據(jù)存儲(chǔ)prometheus 9090至壤、數(shù)據(jù)展示grafana 3000威始,具體搭建方法還未整理
????????未做分布式的時(shí)候,不要壓的太高像街,百來個(gè)就可以了黎棠。
????????運(yùn)行場(chǎng)景、看聚合報(bào)告 響應(yīng)不符合要求镰绎,去grafana看脓斩,發(fā)現(xiàn)cpu占用率過高,sys畴栖、usr随静、idle、io中找到較高的是usr top指令 查看具體哪一個(gè)進(jìn)程使用cpu高吗讶。在列表中的cpu看到的是多核cpu的占用之和燎猛,如4核的會(huì)達(dá)到將近400。數(shù)據(jù)庫(kù)性能測(cè)試需要鋪大量數(shù)據(jù)照皆,否則是無法發(fā)現(xiàn)一些慢查詢的性能影響問題重绷。要找到對(duì)應(yīng)的影響語(yǔ)句,show variables like '%query%'; 查看數(shù)據(jù)庫(kù)的慢查詢打開情況膜毁,可以設(shè)置閾值昭卓,當(dāng)運(yùn)行后,可以記錄具體的慢查詢語(yǔ)句到日志文件中爽茴,通過語(yǔ)句查看慢查詢具體的執(zhí)行語(yǔ)句select * from mysql.slow_log ORDER BY start_time DESC LIMIT 100;
????????top -H -p PID值葬凳,可以查看進(jìn)程中每個(gè)線程的情況。
????????java進(jìn)程常見性能問題:線程死鎖(代碼行)室奏、堆內(nèi)存(對(duì)象)、GC劲装、jar包胧沫,此外影響性能的中間件還有redis ngins tomcat mq昌简,mysql 分庫(kù) 分表是否合理? 死鎖(排斥鎖、共享鎖)
????????性能監(jiān)控方案:在服務(wù)器中安裝性能數(shù)據(jù)收集器绒怨,傳給收集器纯赎。serverAgent 將serveragent-xxx.jar上傳被測(cè)服務(wù)器解壓,進(jìn)入目錄南蹂,windows雙擊serveragent.bat啟動(dòng)犬金,linux 執(zhí)行serveragent.sh(如果不是可執(zhí)行的綠色狀態(tài),需要改為777網(wǎng)上查下怎么改)六剥,默認(rèn)使用4444端口晚顷,jp@gc會(huì)啟動(dòng)。在jmeter中對(duì)計(jì)劃右鍵疗疟,選擇性能接收器jp@gc-perfmon metrics collector(是一個(gè)jmeter插件)该默,增加被監(jiān)控服務(wù)器的ip和端口號(hào),分別增加cpu和memory兩項(xiàng)監(jiān)聽策彤,可以設(shè)置把監(jiān)聽結(jié)果記錄到csv文件里面方便任務(wù)結(jié)束后查看栓袖。nmon監(jiān)控:離線方案,通過nmon收集器收集數(shù)據(jù)店诗,等場(chǎng)景運(yùn)行完成之后裹刮,使用離線分析;實(shí)時(shí)方案庞瘸,grafana+nmon_exporter捧弃,但不建議,因?yàn)橛衅渌ぞ弑冗@個(gè)好用恕洲。解壓并獲取對(duì)應(yīng)平臺(tái)的nmon工具 tar -zxvf nmon 16e_mpginc.tar.gz? ? ? mv nmon_x86_64_centos6 nmon-重命名? nmon -s20 -c3 -f -m /usr/local/nmon_output表示每20s采集一次數(shù)據(jù)塔橡,采集三次 生成報(bào)告文件名包含文件創(chuàng)建的時(shí)間 生成報(bào)告的存放目錄,對(duì)生成的日志文件離線導(dǎo)出后使用excel分析工具解析生成報(bào)告葛家。不好看海量和長(zhǎng)期趨勢(shì)。本機(jī)使用excel分析工具Nmonanalyser泌类。grafana監(jiān)控平臺(tái)癞谒,比較經(jīng)典,選擇監(jiān)控方案需要具備的特性:準(zhǔn)確性高刃榨、時(shí)效性好弹砚、可視化高、歷史數(shù)據(jù)枢希、警告通知
????????測(cè)試報(bào)告需要有描述桌吃、數(shù)據(jù)、結(jié)論苞轿。 測(cè)試數(shù)據(jù)來自工具運(yùn)行場(chǎng)景性能指標(biāo)茅诱、服務(wù)器資源數(shù)據(jù)逗物、對(duì)比結(jié)果數(shù)據(jù)。描述響應(yīng)時(shí)間平均值瑟俭、90%和95%的響應(yīng)時(shí)間翎卓,是否要需求時(shí)間之內(nèi),2 5 8 原則摆寄∈П可以查看儀表盤和圖形報(bào)告,jmeter報(bào)告導(dǎo)出:jmeter -n -t test.jmx(腳本路徑) -l report.jtl -e -o 報(bào)告文件夾 或者在圖形界面中右鍵導(dǎo)出微饥。每次導(dǎo)出前需要清空之前的測(cè)試結(jié)果數(shù)據(jù)log逗扒、jtl否則會(huì)報(bào)錯(cuò),使用命令行執(zhí)行命令后畜号,生成的報(bào)告比較漂亮的報(bào)告(html的)缴阎。對(duì)于場(chǎng)景中的數(shù)據(jù)設(shè)置需要有描述。如jmeter -n -t C:User\XinTian\Desktop\sqTest.jmx -l report.jtl -e -o C:\User\XinTian\Desktop\result简软。如果導(dǎo)出csv打開顯示的是亂碼蛮拔,可以先改成txt格式,打開后另存為csv文件格式選擇ansi痹升。
????????測(cè)試報(bào)告是一個(gè)性能測(cè)試完成的里程碑建炫,測(cè)試報(bào)告是整個(gè)性能測(cè)試環(huán)節(jié)的總結(jié)性工作:性能測(cè)試方案、場(chǎng)景疼蛾、性能分析肛跌、結(jié)論。
????????性能測(cè)試報(bào)告關(guān)注人員察郁。測(cè)試基本信息:測(cè)試目的衍慎、背景、范圍皮钠、引用文檔稳捆、報(bào)告目標(biāo)讀者、術(shù)語(yǔ)定義麦轰、參考資料乔夯。
????????測(cè)試環(huán)境描述:服務(wù)器軟/硬件環(huán)境、網(wǎng)絡(luò)環(huán)境款侵、測(cè)試工具末荐、測(cè)試人員、物理部署新锈、測(cè)試機(jī)與被測(cè)服務(wù)器在同一局域網(wǎng)甲脏,排除網(wǎng)速限制和網(wǎng)速不穩(wěn)定性。
????????測(cè)試案例執(zhí)行分析:詳細(xì)描述每個(gè)測(cè)試案例的執(zhí)行情況,以及對(duì)應(yīng)的測(cè)試結(jié)果分析剃幌。
????????測(cè)試結(jié)果綜合分析及建議:對(duì)本次性能測(cè)試做綜合分析聋涨,并給出測(cè)試結(jié)論和改進(jìn)意見晾浴。
????????啟動(dòng)多少個(gè)進(jìn)程负乡,多少個(gè)線程,并發(fā)多少脊凰,項(xiàng)目日志開啟info狀態(tài)抖棘。
????????需求場(chǎng)景分析、性能指標(biāo)狸涌、設(shè)計(jì)場(chǎng)景切省、執(zhí)行場(chǎng)景、性能分析帕胆、編寫測(cè)試報(bào)告朝捆、在通過性能指標(biāo)時(shí)也需要關(guān)注下服務(wù)器資源指標(biāo),才能給后續(xù)的測(cè)試提供對(duì)比指標(biāo) cpu 內(nèi)存 磁盤 網(wǎng)絡(luò) 其他(數(shù)據(jù)庫(kù)性能(連接池概念)懒豹、系統(tǒng)的分布結(jié)構(gòu))芙盘、性能分析、編寫測(cè)試報(bào)告脸秽。
? ? ? ? put的消息體格式與get post不一樣儒老,變量和值都寫在值一欄中,且有鏈接符號(hào)&也需要到上一個(gè)參數(shù)后面