亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JMeter自定義日志與日志分析的實(shí)現(xiàn)

 更新時(shí)間:2021年12月17日 10:02:38   作者:云深i不知處  
JMeter與Java程序一樣,會(huì)記錄事件日志,本文就介紹一下JMeter自定義日志與日志分析的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1 JMeter日志概覽

JMeter與Java程序一樣,會(huì)記錄事件日志,日志文件保存在bin目錄中,名稱為jmeter.log。當(dāng)然,我們也可以在面板中直接察看日志,點(diǎn)擊右上角黃色標(biāo)志物可以打開(kāi)日志面板,再次點(diǎn)擊收起。

在這里插入圖片描述

可見(jiàn),通過(guò)日志可以幫助我們定位一些不容易直接察覺(jué)的問(wèn)題。

另外,JMeter可以很方便地設(shè)置日志輸出級(jí)別:

在這里插入圖片描述

2 JMeter自定義日志

前面所看到的都是系統(tǒng)日志,也就是JMeter本身所打印的日志。如果我們自己想輸出一些日志,該怎么辦呢?這個(gè)一般就要借助Beanshell了。

例如,一個(gè)接口響應(yīng)結(jié)果如下:

在這里插入圖片描述

在該請(qǐng)求下添加Beanshell斷言,運(yùn)行后,日志中輸出了相應(yīng)內(nèi)容:

在這里插入圖片描述

import org.apache.log4j.Logger;

// 獲取接口的響應(yīng)數(shù)據(jù)
String result = prev.getResponseDataAsString();

if(result.contains("error")){
	Failure=true;
	log.error("接口失敗: " + result);
}

當(dāng)然,自定義日志最重要的作用還是在Linux服務(wù)器上運(yùn)行腳本時(shí),因?yàn)闆](méi)有界面,排查問(wèn)題更加麻煩。

承接前文,將JMeter腳本部署到Linux服務(wù)器上進(jìn)行壓力測(cè)試,存在一些不便之處:

  • 吞吐量統(tǒng)計(jì)中包括了所有請(qǐng)求,包括一些輔助請(qǐng)求(beanshell請(qǐng)求),導(dǎo)致真正的tps統(tǒng)計(jì)數(shù)據(jù)不準(zhǔn)確。
  • 業(yè)務(wù)是否成功,以及具體失敗原因難以排查。

首先,測(cè)試接口的響應(yīng)內(nèi)容如圖所示:

在這里插入圖片描述

在接口下添加2個(gè)【JSON Path Extractor】,分別用于在測(cè)試接口的響應(yīng)內(nèi)容里提取code、orderId。

在這里插入圖片描述

在這里插入圖片描述

再在測(cè)試接口下添加【BeanShell斷言】:

import org.apache.log4j.Logger;

// 獲取接口的響應(yīng)數(shù)據(jù)
String result = prev.getResponseDataAsString();
// 從JSON提取器中獲取code和orderId
String code = vars.get("code");
String orderId = vars.get("orderId");

if(code.equals("0")){
	log.info("place order success, orderId=" + orderId);
}else{
	Failure=true;
	log.error("FailureMessage: " + result);
}

將該腳本上傳到Linux中,順便寫個(gè)啟動(dòng)腳本:start.sh

#!/bin/bash
jmeter_log=/home/test/jmeter.log

if [ -f "$jmeter_log" ]; then
 // 將原日志文件備份后刪除
 cp $jmeter_log /home/test/jmeter.log_back
 rm -rf $jmeter_log
fi
// 啟動(dòng)JMeter腳本
jmeter -n -t /home/test/test.jmx -l /home/test/result/test.jtl

運(yùn)行腳本后,cat jmeter.log,效果如下:

在這里插入圖片描述

3 JMeter日志分析

針對(duì)該日志寫一個(gè)日志分析腳本logAnalysis.sh

#!/bin/bash
jmeter_log=/home/test/jmeter.log
thread_num=`grep 'Thread started' $jmeter_log|tail -n 1|awk -F"-" '{print$6}'`
start_time=`grep 'All thread groups have been started' $jmeter_log|awk -F" " '{print $1,$2}'|awk -F"," '{print $1}'`
end_time=`grep 'Shutdown hook ended' $jmeter_log|awk -F" " '{print $1,$2}'|awk -F"," '{print $1}'`

final_success_time=`grep "place order success" $jmeter_log|tail -n 1|awk -F" " '{print$1,$2}'|awk -F"," '{print$1}'`
success_running_time=$[ $(date -d "$final_success_time" +%s) - $(date -d "$start_time" +%s) ]
running_time=$[ $(date -d "$end_time" +%s) - $(date -d "$start_time" +%s) ]
cancle_times=`grep "cancle orders success" $jmeter_log|wc -l`   //撤單次數(shù)

success_times=`grep success $jmeter_log|wc -l`   // 成功次數(shù)
failure_times=`grep FailureMessage $jmeter_log|wc -l`
request_times=$[ $success_times+$failure_times ]
error_rate=`echo "scale=2; $failure_times/$request_times*100" | bc`
qps=$[ $request_times/$running_time ]
throughput=$[ $success_times/$success_running_time ]

echo -e '線程數(shù):'$thread_num
echo -e '請(qǐng)求次數(shù):' $request_times
echo -e '成功次數(shù):' $success_times
echo -e '失敗次數(shù):' $failure_times
echo -e '撤單次數(shù):'$cancle_times
echo -e '錯(cuò)誤率:' $error_rate'%'
echo -e '開(kāi)始時(shí)間:'$start_time
echo -e '結(jié)束時(shí)間:'$end_time
echo -e '最后成功請(qǐng)求時(shí)間:'$final_success_time
echo -e '請(qǐng)求時(shí)間:' $running_time 
echo -e '成功運(yùn)行時(shí)間:'$success_running_time
echo -e '吞吐量:'$throughput'/s'
echo -e 'QPS:'$qps'/s'

當(dāng)JMeter腳本運(yùn)行一段時(shí)間后,執(zhí)行l(wèi)ogAnalysis.sh,效果如下:

線程數(shù):180
請(qǐng)求次數(shù): 131691
成功次數(shù): 131493
失敗次數(shù): 198
撤單次數(shù):141
錯(cuò)誤率: 0%
開(kāi)始時(shí)間:2018-11-28 15:34:54
結(jié)束時(shí)間:2018-11-28 15:37:17
最后成功請(qǐng)求時(shí)間:2018-11-28 15:37:17
請(qǐng)求時(shí)間: 143
成功運(yùn)行時(shí)間:143
吞吐量:919/s
QPS:920/s

可以看到,輸出信息全面清晰。這樣,我們就可以在linux下運(yùn)行JMeter壓測(cè)腳本時(shí),實(shí)時(shí)獲取壓測(cè)詳情了。

到此這篇關(guān)于JMeter自定義日志與日志分析的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)JMeter自定義日志與日志分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Spring Cloud Eureka 自我保護(hù)機(jī)制

    淺談Spring Cloud Eureka 自我保護(hù)機(jī)制

    這篇文章主要介紹了淺談Spring Cloud Eureka 自我保護(hù)機(jī)制,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 入門java的第一步HelloWorld

    入門java的第一步HelloWorld

    這篇文章主要介紹了入門java的第一步-Hello,World,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的java初步學(xué)習(xí)具有一定的學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-04-04
  • java實(shí)現(xiàn)支付寶退款功能

    java實(shí)現(xiàn)支付寶退款功能

    這篇文章主要為大家詳細(xì) 介紹了java實(shí)現(xiàn)支付寶退款功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 深入了解Java中Synchronized的各種使用方法

    深入了解Java中Synchronized的各種使用方法

    在Java當(dāng)中synchronized關(guān)鍵字通常是用來(lái)標(biāo)記一個(gè)方法或者代碼塊。本文將通過(guò)示例為大家詳細(xì)介紹一下Synchronized的各種使用方法,需要的可以參考一下
    2022-08-08
  • Java中常見(jiàn)死鎖與活鎖的實(shí)例詳解

    Java中常見(jiàn)死鎖與活鎖的實(shí)例詳解

    這篇文章主要介紹了Java中常見(jiàn)死鎖與活鎖的實(shí)例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • Spring Boot 連接LDAP的方法

    Spring Boot 連接LDAP的方法

    這篇文章主要介紹了Spring Boot 連接LDAP的方法,僅僅涉及基本的使用ODM來(lái)快速實(shí)現(xiàn)LDAP增刪改查操作。具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-12-12
  • java連接池Druid獲取連接getConnection示例詳解

    java連接池Druid獲取連接getConnection示例詳解

    這篇文章主要為大家介紹了java連接池Druid獲取連接getConnection示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java @Value(

    Java @Value("${xxx}")取properties時(shí)中文亂碼的解決

    這篇文章主要介紹了Java @Value("${xxx}")取properties時(shí)中文亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 深入了解Spring的事務(wù)傳播機(jī)制

    深入了解Spring的事務(wù)傳播機(jī)制

    Spring事務(wù)傳播機(jī)制是指,包含多個(gè)事務(wù)的方法在相互調(diào)用時(shí),事務(wù)是如何在這些方法間傳播的。本文通過(guò)示例詳細(xì)介紹了Spring的事務(wù)傳播機(jī)制,需要的可以參考一下
    2022-09-09
  • 解決MyBatis Mapper的XML文件SQL語(yǔ)句無(wú)法自動(dòng)提示問(wèn)題(親測(cè)有效)

    解決MyBatis Mapper的XML文件SQL語(yǔ)句無(wú)法自動(dòng)提示問(wèn)題(親測(cè)有效)

    這篇文章主要給大家介紹了如何解決MyBatis Mapper的XML文件SQL語(yǔ)句無(wú)法自動(dòng)提示的問(wèn)題,文中有詳細(xì)的原因分析,以及通過(guò)圖文介紹的解決方案,需要的朋友可以參考下
    2023-10-10

最新評(píng)論