Jmeter

零介汹、 一些亂七八糟的廢話

性能關(guān)鍵指標(biāo)
多 - 并發(fā)量 能夠支持最大的用戶訪問量
快 - 響應(yīng)時(shí)間 有多快
好 - 穩(wěn)定性 (長時(shí)間運(yùn)行)
省 - 資源使用率
加上 思考時(shí)間

  • 響應(yīng)時(shí)間 - 普遍接受響應(yīng)時(shí)間 2、5、8秒 好啤斗,可以接受跃巡,上限
  • 并發(fā)用戶數(shù) 影響最大的是內(nèi)存
    并發(fā)用戶數(shù)C計(jì)算:C = nL/T
    C - 平均并發(fā)用戶數(shù)
    n - 平均每天訪問用戶數(shù)
    L - 一天內(nèi)用戶從登錄到退出的平均時(shí)間
    T - 是考察時(shí)間長度(一天內(nèi)多長時(shí)間有用戶使用系統(tǒng))
    并發(fā)用戶數(shù)峰值C^計(jì)算
    C^ 約等于 C + 3 根號C
    系統(tǒng)用戶數(shù) - 注冊用戶量 影響的是磁盤空間
    初始化性能環(huán)境 warm up 熱機(jī)*也就是說 模擬實(shí)際使用場景败明,用戶量之類的 磁盤到內(nèi)存的過程
    關(guān)于 異地訪問服務(wù)器 響應(yīng)時(shí)間的差異 找運(yùn)維 - 在兩個(gè)防火墻之間注入網(wǎng)絡(luò)延時(shí)
  • 吞吐量 -
  • 系統(tǒng)性能計(jì)數(shù)器 -
  • 思考時(shí)間 - 更加真實(shí)的模擬用戶使用


    用戶300的時(shí)候出現(xiàn)拐點(diǎn)液茎,說明飽和了,性能瓶頸乔妈,這種平直線多數(shù)是因?yàn)榫W(wǎng)絡(luò)問題蝙云,需要增加帶寬,丟包了
    平直線部分如果是波浪線需要加服務(wù)器路召,內(nèi)存滿了勃刨,還是cpu滿了

每臺機(jī)器能創(chuàng)建多少個(gè)用戶 由1. 機(jī)器的內(nèi)存(物理內(nèi)存)和
2.jmeter 是一個(gè)java進(jìn)程 - 進(jìn)程需要一定的內(nèi)存資源-堆內(nèi)存
3.端口號,占用端口號分布不均 需要用主從機(jī)-分布式-負(fù)載均衡

一股淡、 安裝

mac版本
http://www.reibang.com/p/bce9077d883c

  • 下載 pache-jmeter-5.0.tgz 放網(wǎng)盤了
  • 需要java8的環(huán)境 java環(huán)境看前邊的筆記
  • 配置PATH 使得終端 輸入jmeter就可以打開
    open ~/.bash_profile
export JMETER_HOME=/Users/lxr/apache-jmeter-5.0
export PATH=$JAVA_HOME/bin:$PATH:.:$JMETER_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar

source ~/.bash_profile

然后就可以在終端輸入 jmeter 打開jmeter程序了

  • 設(shè)置jmeter語言



    通常是寫http的請求身隐,寫不了解的請求時(shí),可以用這個(gè)模板
  • 關(guān)于jmeter的屬性設(shè)置
    (1)/Users/lxr/apache-jmeter-5.0/bin/jmeter.properties
#language=en  -> language=zh_CN

(2)分布式 remote_hosts ip地址逗號隔開

二唯灵、 jmeter 使用

1.配置元件
HTTP請求默認(rèn)值
HTTP消息頭管理
HTTPCookie管理器
HTTPCache管理器
2.監(jiān)聽器
①察看結(jié)果樹※
I:分析某個(gè)請求明細(xì)贾铝、詳情:請求頭、請求體早敬;響應(yīng)頭忌傻、響應(yīng)體
II:性能場景 分析請求錯(cuò)誤原因 之類的
②聚合報(bào)告 匯總統(tǒng)計(jì):請求數(shù)、響應(yīng)時(shí)間(平均搞监、90%、95%镰矿、min琐驴、max 毫秒)、錯(cuò)誤率、吞吐量(越高越好)绝淡、發(fā)送/接受量(帶寬)
③用表格查看結(jié)果(能體現(xiàn)起始時(shí)間)
④圖形結(jié)果
3.其他元件
①前置處理器(發(fā)送請求前執(zhí)行的元件宙刘。比如加密、)
②后置處理器(比如:提取數(shù)據(jù))
③定時(shí)器(1.思考時(shí)間-固定定時(shí)器牢酵;2.同步定時(shí)器-集合點(diǎn)幾點(diǎn)搶購悬包;3.隨機(jī)定時(shí)器;4.吞吐量定時(shí)器)

  1. 創(chuàng)建測試計(jì)劃 選擇保存位置
  2. 創(chuàng)建線程組 不做負(fù)載就線程數(shù)之類的全部 輸入1


  3. 增加HTTP請求 - 保存
    測試環(huán)境正式環(huán)境 需要來回切換之類的所以 要有一個(gè) HTTP請求默認(rèn)值馍乙,里頭弄好了布近,其他的請求 一樣 就不用寫了
    增加HTTP請求 - 保存
    填寫接口

    4.察看結(jié)果樹 看接口請求結(jié)果 線程組 右鍵 添加 監(jiān)聽 查看結(jié)果樹
    新建一個(gè)Excel文件 將后綴改成.csv,圖中文件寫入選擇它丝格,運(yùn)行結(jié)果就會保存到這個(gè)路徑下的csv文件中

    用表格查看結(jié)果 添加 - 監(jiān)聽器 -
  4. HTTP Cookie管理器 - 有些需要有cookie作為參數(shù)的接口需要 添加配置元件 HTTP Cookie管理器 添加了 放在這里就成了 自己就存起來了


  5. Token獲取
    添加 http請求 返回token的
    添加后置處理器 JSON提取器 提取參數(shù)詳細(xì)文章https://www.cnblogs.com/tudou-22/p/12579575.html
    用Debug PostProcessor檢查json提取器是否成功取到了值(查看完了 要禁用它)詳細(xì)文章 https://www.cnblogs.com/fengpingfan/p/5894020.html
    從查看結(jié)果書中 這個(gè)請求出現(xiàn)小三角可以打開看
    用變量的時(shí)候 ${token}
  1. 響應(yīng)斷言 - 在要執(zhí)行斷言的 請求下添加 注意作用域撑瞧,可以拖拽過去


  2. 線程組下 右鍵 添加 監(jiān)聽器 斷言結(jié)果 ,然后運(yùn)行 綠三角
  3. 聚合報(bào)告
  4. 生成HTML報(bào)告

關(guān)于腳本錄制显蝌,可以用Fiddler抓包预伺,可以導(dǎo)出jmx文件 用jmeter打開

Part2、代理 腳本錄制

  1. 新建線程組
  2. 測試計(jì)劃 添加 非測試元件 HTTP代理服務(wù)器
  3. 打開瀏覽器(谷歌為例)
    設(shè)置 -> 高級 -> 系統(tǒng) -> 打開您計(jì)算機(jī)的代理設(shè)置


    記得點(diǎn) 保存


    導(dǎo)入證書 設(shè)置 - 高級 - 隱私設(shè)置和安全性 - 安全 - 下滑 管理證書
  • Windows


    選擇證書
  • Mac

    雙擊點(diǎn)開證書
    添加位置切換成 系統(tǒng)

    在鑰匙串中找到曼尊,發(fā)現(xiàn)還是不受信任狀態(tài)酬诀,修改成始終信任即可
  1. Requests Filtering - 包含模式 - 排除模式 設(shè)置正則
    .*www\.wanandroid\.com.*
    .*\.(js|css|PNG|jpg|ico|png|gif).*
  2. 啟動HTTP代理服務(wù)器
  3. 瀏覽網(wǎng)頁 即可錄制成功,添加 - 察看結(jié)果樹 能察看結(jié)果

prat3骆撇、蘋果電腦 錄制 蘋果手機(jī)

  1. PC http代理 系統(tǒng)設(shè)置 - 網(wǎng)絡(luò) - 高級 - 代理 - 勾選輸入 - 好 - 應(yīng)用
  2. jmeter HTTP代理服務(wù)器設(shè)置 - 點(diǎn)運(yùn)行 - bin文件夾下生成證書
  3. iPhone 安裝jmeter的信任證書
    cd /Users/lxr/apache-jmeter-5.4/bin
    python3 -m http.server 8080

    訪問 http://[ip地址]:8080下載證書 - 并去設(shè)置里安裝信任證書
  1. 手機(jī)配置 代理

    設(shè)置 - 無線局域網(wǎng) - ① i - 配置代理 - 電腦iP 剛電腦上網(wǎng)絡(luò)頁面就有 - 端口號8888 設(shè)置完了瞒御,手機(jī)連不上網(wǎng)了去檢查jmeterHTTP代理服務(wù)器啟動了沒有

  2. 啟動jmeterHTTP代理服務(wù)器后 這個(gè)彈框不能關(guān)閉

Part4、參數(shù)化

概要

  1. 參數(shù)化流程
  • 找出需要做參數(shù)化的數(shù)據(jù)
  • 準(zhǔn)備提供給參數(shù)化需要的數(shù)據(jù)源
  • 關(guān)聯(lián)數(shù)據(jù) 把腳本里的常量變成變量(使用前面的數(shù)據(jù)源數(shù)據(jù))
  1. jmeter參數(shù)化方式
    ① CSV -- 需要配置的元件
    ② 函數(shù)式(隨機(jī)數(shù)艾船、時(shí)間 time葵腹、counter計(jì)數(shù)器)
    ③ 變量
    ④ 編程式

使用場景

  1. CSV 賬號密碼 作用域看這個(gè)數(shù)據(jù)源給誰用



    token 后置 JSON提取器


    添加-后置處理器-JSON提取器
    添加-取樣器-debug調(diào)試取樣器
    察看結(jié)果樹中 看調(diào)試取樣器 中參數(shù),開發(fā)完了 給調(diào)試器禁用
  2. 函數(shù)式
  3. 變量
  4. 編程式
  • 引入外部的jar、java屿岂、class包
  • 使用beanshell編程

Part5践宴、Jmeter用正則關(guān)聯(lián)

  1. 正則表達(dá)式
    ()括起來的部分就是要提取的部分
    . 匹配任何字符串
  • 一次或多次
    ? 找到第一個(gè)匹配項(xiàng)后就停止

    添加 取樣器 Debug 運(yùn)行在察看結(jié)果樹中來看變量有沒有成功取到

    應(yīng)用
獲取公眾號列表https://wanandroid.com/wxarticle/chapters/json 
https://wanandroid.com/wxarticle/list/408/1/json
方法:GET
參數(shù):
    公眾號 ID:拼接在 url 中,eg:405
    公眾號頁碼:拼接在url 中爷怀,eg:1

請求結(jié)果為 提取其中的"id": 408

添加 - 后置處理器 - 正則表達(dá)式提取器

用美元符號來應(yīng)用該變量

Part5阻肩、集合點(diǎn)技術(shù)

eg:到點(diǎn)搶購

線程數(shù) 5 個(gè)用戶,Ramp-up 5s 5s生成5個(gè)用戶
并發(fā)登錄 注意作用域

給登錄請求 添加 - 定時(shí)器 - Sychronizing Timer (同步定時(shí)器)

兩個(gè)輸入項(xiàng)
模擬用戶組的數(shù)量(Number of simulated Users to Group by):集合夠多少個(gè)用戶/線程后發(fā)一次請求
运授?烤惊??0 就是跟線程組設(shè)置的線程數(shù)一樣吁朦?柒室?但是我的不是這樣 還是差幾毫秒的,填跟線程組設(shè)置 線程一樣的話 就是同時(shí)了
超時(shí)時(shí)間(Timeout):等待集合逗宜,直到超時(shí) ms 毫秒雄右,(設(shè)置值大于線程數(shù)量空骚,或者最后的一批個(gè)數(shù) 不夠一撥了比如 線程數(shù)5 設(shè)置2個(gè)一撥 最后一個(gè)等不齊,就只能等超時(shí)了)

Part6擂仍、實(shí)戰(zhàn)

新的點(diǎn)

  1. 僅一次控制器 某些請求 只想每個(gè)用戶執(zhí)行一次 添加 - 邏輯控制器 - 僅一次控制器

    將請求拖進(jìn)里邊
  2. 測試計(jì)劃 中有多個(gè)線程組囤屹,默認(rèn)是同事執(zhí)行的 勾選后就是按照順序執(zhí)行,但是不影響setup 和 teardown
  3. 用戶自定義變量 將項(xiàng)目中用到的會重復(fù)使用會變的 全局的東西拿出來

    腳本開發(fā)
  4. 參數(shù)化數(shù)據(jù) 并發(fā)登錄逢渔,多用戶(不同賬號)
  5. 準(zhǔn)備好數(shù)據(jù)源
  6. 腳本中的常量 改成 變量 (將用戶名 密碼 用變量代替)

CSV 數(shù)據(jù)文件設(shè)置

請求數(shù)據(jù)替換成變量
線程組 并發(fā)設(shè)置 設(shè)置 1 秒 產(chǎn)生5個(gè)用戶 一直循環(huán)執(zhí)行 10秒

Part 7

性能調(diào)優(yōu)https://www.bilibili.com/video/BV1xV411m7eo

  1. 聚合報(bào)告
  2. Grafana 性能調(diào)優(yōu)
  3. 命令行 top
    分析過程
  4. 聚合報(bào)告 響應(yīng)時(shí)間 錯(cuò)誤率 吞吐量 來判斷 問題出現(xiàn)在哪里
    eg:響應(yīng)時(shí)間大于預(yù)期值
  5. Grafana 性能調(diào)優(yōu) 通過Grafana查看是什么東西的問題
    eg:發(fā)現(xiàn)CPU爆紅 使用率過高
  6. 命令行 top 查看具體哪個(gè)進(jìn)程使用CPU高

結(jié)合看
先用python代碼給 100個(gè)賬號密碼 寫入文件

with open('/Users/lxr/jmeter_file/都市商城賬號.txt', 'w') as file:
    for i in range(1,100):
        num_str = (3-len(str(i)))*'0' + str(i)
        file_str = 'sq'+num_str+','+'123456'+'\n'
        print(file_str,type(file_str))
        file.write(file_str)

20秒內(nèi)生成100個(gè)用戶肋坚,每秒5個(gè)用戶,持續(xù)執(zhí)行10秒鐘


因?yàn)檎埱筇嗔怂嗬砸催x只顯示錯(cuò)誤日志
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末智厌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子亿昏,更是在濱河造成了極大的恐慌峦剔,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件角钩,死亡現(xiàn)場離奇詭異吝沫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)递礼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門惨险,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人脊髓,你說我怎么就攤上這事辫愉。” “怎么了将硝?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵恭朗,是天一觀的道長。 經(jīng)常有香客問我依疼,道長痰腮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任律罢,我火速辦了婚禮膀值,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘误辑。我一直安慰自己沧踏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布巾钉。 她就那樣靜靜地躺著翘狱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砰苍。 梳的紋絲不亂的頭發(fā)上盒蟆,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天踏烙,我揣著相機(jī)與錄音师骗,去河邊找鬼历等。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辟癌,可吹牛的內(nèi)容都是我干的寒屯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼黍少,長吁一口氣:“原來是場噩夢啊……” “哼寡夹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厂置,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤菩掏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后昵济,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體智绸,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年访忿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞧栗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡海铆,死狀恐怖迹恐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情卧斟,我是刑警寧澤殴边,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站珍语,受9級特大地震影響锤岸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜廊酣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一能耻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亡驰,春花似錦晓猛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至透乾,卻和暖如春洪燥,著一層夾襖步出監(jiān)牢的瞬間磕秤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工捧韵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留市咆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓再来,卻偏偏與公主長得像蒙兰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子芒篷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK搜变,配置JDK環(huán)境變量。Jmeter不需要安裝针炉,下載后...
    茶小汐閱讀 2,921評論 0 8
  • 一. 性能測試 1.1. 性能測試是什么 1.1.1 廣義定義 基于協(xié)議模擬用戶發(fā)出請求挠他,對服務(wù)器形成一定負(fù)載,...
    KiKi_2005A閱讀 417評論 0 0
  • 1.性能測試 1.性能測試是什么 基于協(xié)議模擬用戶發(fā)出請求篡帕,對服務(wù)器形成一定負(fù)載殖侵,來測試服務(wù)器的性能指標(biāo)是否滿足要...
    連貓都嫌棄我閱讀 556評論 0 0
  • 一. 性能測試 1.性能測試是什么 廣泛定義:基于協(xié)議模擬用戶發(fā)出請求,對服務(wù)器形成一定負(fù)載赂苗,來測試服務(wù)器的性能指...
    c_dab5閱讀 179評論 0 0
  • 彩排完愉耙,天已黑
    劉凱書法閱讀 4,187評論 1 3