最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1 JMeter日志概覽

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

在這里插入圖片描述

可見,通過日志可以幫助我們定位一些不容易直接察覺的問題。

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

在這里插入圖片描述

2 JMeter自定義日志

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

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

在這里插入圖片描述

在該請求下添加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)行腳本時,因為沒有界面,排查問題更加麻煩。

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

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

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

在這里插入圖片描述

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

在這里插入圖片描述

在這里插入圖片描述

再在測試接口下添加【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中,順便寫個啟動腳本: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
// 啟動JMeter腳本
jmeter -n -t /home/test/test.jmx -l /home/test/result/test.jtl

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

在這里插入圖片描述

3 JMeter日志分析

針對該日志寫一個日志分析腳本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 '請求次數(shù):' $request_times
echo -e '成功次數(shù):' $success_times
echo -e '失敗次數(shù):' $failure_times
echo -e '撤單次數(shù):'$cancle_times
echo -e '錯誤率:' $error_rate'%'
echo -e '開始時間:'$start_time
echo -e '結(jié)束時間:'$end_time
echo -e '最后成功請求時間:'$final_success_time
echo -e '請求時間:' $running_time 
echo -e '成功運(yùn)行時間:'$success_running_time
echo -e '吞吐量:'$throughput'/s'
echo -e 'QPS:'$qps'/s'

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

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

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

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

相關(guān)文章

  • idea如何修改文件的file is read-only問題

    idea如何修改文件的file is read-only問題

    這篇文章主要介紹了idea如何修改文件的file is read-only問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java使用IntelliJ IDEA連接MySQL的詳細(xì)教程

    Java使用IntelliJ IDEA連接MySQL的詳細(xì)教程

    這篇文章主要給大家介紹了關(guān)于Java使用IntelliJ IDEA連接MySQL的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 淺談Java響應(yīng)式系統(tǒng)

    淺談Java響應(yīng)式系統(tǒng)

    第一次聽到reactive這個詞還是在幾年前,偶然了解到了Rxjava這個項目,仿佛為我打開了一扇新的大門,Rxjava是ReactiveX的java實(shí)現(xiàn),ReactiveX家族除了Rxjava還有RxJS, Rx.NET,RxScala等等。
    2021-06-06
  • 如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    在Java語言中獲取當(dāng)前年份有幾種方法:使用java.util包下的Calendar類,使用java.time包下的LocalDate類或者使用java.text包下的SimpleDateFormat類,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • Spring Boot無縫集成MongoDB

    Spring Boot無縫集成MongoDB

    這篇文章主要介紹了Spring Boot無縫集成MongoDB的相關(guān)知識,本文涉及到MongoDB的概念和nosql的應(yīng)用場景,需要的朋友可以參考下
    2017-04-04
  • java反射原理制作對象打印工具

    java反射原理制作對象打印工具

    本文主要給大家介紹了java反射原理制作對象打印工具的方法和代碼,以及一個熱心網(wǎng)友給出的更加簡潔方便的代碼,小伙伴們需要的話可以參考下。
    2015-12-12
  • Spring中Controller和RestController的區(qū)別詳解

    Spring中Controller和RestController的區(qū)別詳解

    這篇文章主要介紹了Spring中Controller和RestController的區(qū)別詳解,@Controller是標(biāo)識一個Spring類是Spring MVC controller處理器,@Controller類中的方法可以直接通過返回String跳轉(zhuǎn)到j(luò)sp、ftl、html等模版頁面,需要的朋友可以參考下
    2023-09-09
  • 快速解決idea打開某個項目卡住的問題

    快速解決idea打開某個項目卡住的問題

    這篇文章主要介紹了解決idea打開某個項目卡住的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • kotlin改善java代碼實(shí)例分析

    kotlin改善java代碼實(shí)例分析

    我們給大家整理了關(guān)于kotlin改善java代碼的相關(guān)實(shí)例以及操作的詳細(xì)方法,有需要的讀者們參考下。
    2018-03-03
  • 詳解Spring數(shù)據(jù)緩存注解@Cacheable、@CachePut、@CacheEvict

    詳解Spring數(shù)據(jù)緩存注解@Cacheable、@CachePut、@CacheEvict

    這篇文章主要介紹了詳解Spring數(shù)據(jù)緩存注解@Cacheable、CachePut、@CacheEvict,當(dāng)以一組參數(shù)第一次調(diào)用某個方法時,返回值會被保存在緩存中,如果這個方法再次以相同的參數(shù)進(jìn)行調(diào)用時,這個返回值會從緩存中查詢獲取,需要的朋友可以參考下
    2023-07-07

最新評論

老河口市| 拜城县| 临西县| 错那县| 南雄市| 北宁市| 金山区| 防城港市| 青田县| 简阳市| 十堰市| 广灵县| 绩溪县| 兴仁县| 湾仔区| 宝山区| 焦作市| 夹江县| 托里县| 新竹县| 高阳县| 大同县| 承德市| 普兰店市| 江永县| 奉节县| 灌阳县| 柞水县| 堆龙德庆县| 通山县| 郧西县| 化隆| 莫力| 兰州市| 文成县| 兴山县| 武强县| 无极县| 吴堡县| 武定县| 宜城市|