日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JMeter基础之-使用技巧

發布時間:2024/4/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMeter基础之-使用技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在這此對新版本jmeter的學習+溫習的過程,發現了一些以前不知道的功能,所以,整理出來與大分享。本文內容如下。

  • 如何使用英文界面的jmeter
  • 如何使用鏡像服務器
  • Jmeter分布式測試
  • 啟動Debug?日志記錄
  • 搜索功能
  • 線程之間傳遞變量
  • ?如何使用英文界面的JMeter


    ?

      Jmeter啟動時會自動判斷操作系統的locale?并選擇合適的語言啟動,所以,我們啟動jmeter后,其會出現一個倍感親切的中文界面。但由于jmeter本身的漢化工作做得不好,你會看到有未被漢化的選項及元件的參數。而且部分翻譯并不準確,因此對于英文比較好的牛人來說更喜歡純正的英文界面。

    強制以英文方式啟動jmeter的方法如下:

    在windows環境下,打開jmeter解壓目錄,bin目錄下的jmeter.bat文件,也就是jmeter程序的啟動文件,選擇記事本方式打開。做以下修改:

    ................. set HEAP=-Xms512m -Xmx512m set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50% set TENURING=-XX:MaxTenuringThreshold=2 set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 set PERM=-XX:PermSize=64m -XX:MaxPermSize=64m set LOCALE=-Duser.language=en -Duser.region=rem set DEBUG=-verbose:gc -XX:+PrintTenuringDistribution......... rem Server mode rem Collect the settings defined above set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %RMIGC% %PERM% %DDRAW% %LOCALE% .............

    暈死,當我上面介紹了那么多后,在最新的2.8版本,我無意中發現了這個功能。

    ?

    ?

    如何使用鏡像服務器


    ?  在調試和修改測試計劃的過程中,通常會為采樣器增加一些額外的設置,例何設置額外的HTTP頭、cookie管理器或認證管理器等,但當設置了這些內容后,sampler發出的請求是否就與預期的完全一支呢?

      當然用戶可以通過添加監聽器來看查采樣器發出的HTTP請求,但如果調試過程中并不想真正地把請求發送給被測應用,如何解決這個問題呢?

      Jmeter?提供了一個名叫HTTP?Mirror?Server的組件,HTTP?Mirror?Server可以啟動一個鏡像的服務器,該服務器把所有接收到的請求原封不動地返回,這樣就可以看到發出請求的具體內容了。

    添加HTTP?Mirror?Server的方式:

    右鍵點擊“工作臺”--->非測試元件--->HTTP?Mirror?Server?

    如果有必要的話需要修改端口號,點擊“啟動”按鈕來啟動Server?。

    接下來修改采樣器,使其將HTTP請求?發送到localhost:8081(也就是Mirror?Server啟動的位置)

    然后,運行測試計劃,則可以從監聽器“查看結果樹”中看到響應數據。

    ??

    JMeter分布式測試


    ??

      Jmeter?是java?應用,對于CPU和內存的消耗比較大,因此,當需要模擬數以千計的并發用戶時,使用單臺機器模擬所有的并發用戶就有些力不從心,甚至會引起JAVA內存溢出錯誤。為了讓jmeter工具提供更大的負載能力,jmeter短小精悍一有了使用多臺機器同時產生負載的機制。

      那么,是如何實現多臺負載機同時運行的呢?當然不會多個人坐在多臺負載機面前,一喊開始,大家同時啟動jmeter。這種方式很笨,也很難達到真正的同步。其實,我們通過單個jmeter?客戶端就可以控制多個遠程的jmeter服務器,使它們同步的對服務器進行壓力測試。

      通過遠程運行jmeter,測試人員可以跨越多臺低端計算機復制測試,這樣就可以模擬一個比較大的服務器壓力,一個jmeter客戶端實例,理論上可以控制任意多的遠程jmeter實例,并通過他們收集測試數據。這樣一樣,就有了如下特性:

    *???保存測試采樣數據到本地機器

    *???通過單臺機器管理多個jmeter執行引擎。

    *???沒有必要將測試計劃復制到每一臺機器,jmeter?GUI客戶端會將它發往每一臺jmeter服務器。

    *???每一臺jmeter遠程服務器都執行相同的測試計劃,jmeter不會在執行期間做負載均衡,每一臺服務器都會完整地運行測試計劃。

    ?

      在1.4G?Hz~3GHz?的CPU?、1GB?內存的?JMeter?客戶端上,可以處理線程?100~300。但是Web?Service?例外。XML處理是?CPU?運算密集的,會迅速消耗掉所有的CPU?。一般來說,以XML技術為核心的應用系統,其性能將是普通Web?應用的?10%~25%?。另外,如果所有負載由一臺機器產生,網卡和交換機端口都可能產生瓶頸,所以一個JMeter?客戶端線程數不應超過?10?0?。?

      采用JMeter?遠程模式并不會比獨立運行相同數目的非GUI?測試更耗費資源。但是,如果使用大量的JMeter?遠程服務器,可能會導致客戶端過載,或者網絡連接發生擁塞。

    使用多臺機器產生負載的操作步驟如下:

    (1)在所有期望運行jmeter作為?負載生成器的機器上安裝jmeter,?并確定其中一臺機器作為?controller?,其他的的機器作為agent?。然后運行所有?agent?機器上的jmeter-server?文件(假定使用兩臺機器192.168.0.100?和192.168.0.101?作為agent)

    ?

    (2)在controller機器的jmeter的bin目錄下,找到jmeter.properties?文件,編輯該文件:

    查找: remote_hosts=127.0.0.1 修改為: remote_hosts=192.168.0.100:1099,192.168.0.101:1099

      這里要特別注意端口后,有些資料說明端口1644為jmeter的controller?和agent?之間進行通信的默認RMI端口號,但是在測試時發現,設置為1644運行不成功,改成1099后運行通過。另外還要留意agent的機子是否開啟了防火墻等。

    ?

    (3)啟動controller?機子上的jmeter應用,選擇菜單“運行”--->“遠程啟動”,來分別啟動agent?,也可以直接選擇“遠程全部啟動”來將所有的agent啟動。

    ?

    啟動Debug?日志記錄


    ?  大多數測試元件都支持Debug?日志記錄。如果通過?GUI?運行測試計劃,那么在選中測試元件后,可以通過“幫助”菜單enable?debug或者disable?debug。在“幫助”菜單?中有一個選項“What’s?this?node??”,

      通過它可以查看GUI?和測試元件的類名,如圖?11?-7?所示。通過它們,測試人員可以決定修改哪一項JMeter?屬性,以便修改日志級別。

    例如:我們可以點擊一個HTTP請求,選擇菜單欄“幫助”--->what's?this?node???

    在jmeter的bin\目錄下,找到jmeter.properties?文件,關于日志級別的屬性如下:

    #Logging levels for the logging categories in JMeter. Correct values are FATAL_ERROR, ERROR, WARN, INFO, and DEBUG # To set the log level for a package or individual class, use: # log_level.[package_name].[classname]=[PRIORITY_LEVEL] # But omit "org.apache" from the package name. The classname is optional. Further examples below.log_level.jmeter=INFO log_level.jmeter.junit=DEBUG #log_level.jmeter.control=DEBUG #log_level.jmeter.testbeans=DEBUG #log_level.jmeter.engine=DEBUG #log_level.jmeter.threads=DEBUG #log_level.jmeter.gui=WARN #log_level.jmeter.testelement=DEBUG #log_level.jmeter.util=WARN #log_level.jmeter.util.classfinder=WARN #log_level.jmeter.test=DEBUG #log_level.jmeter.protocol.http=DEBUG # For CookieManager, AuthManager etc: #log_level.jmeter.protocol.http.control=DEBUG #log_level.jmeter.protocol.ftp=WARN #log_level.jmeter.protocol.jdbc=DEBUG #log_level.jmeter.protocol.java=WARN #log_level.jmeter.testelements.property=DEBUG log_level.jorphan=INFO

    ?搜索功能


    ?  這是在使用一個變量或含有一定的URL或參數測試計劃樹和元素有時很難找到?,F在一個新的特點是從2.6開始,你可以訪問它的菜單搜索。它提供了搜索與下列選項:

    *?? 使搜索區分大小寫區分大小寫:

    *?? 正則表達式是一個正則表達式搜索文本,如果有的話將被搜索的正則表達式樹的組件,例如“\?BTEST?\?b”將匹配任何組件,包含測試組件的搜索元素

    ?

    ??

    線程之間傳遞變量


    ?  JMeter?變量作用域局限于所屬線程。這樣設計是經過深思熟慮的,目的是讓測試線程能夠獨立運轉。有時候用戶可能需要在不同線程間(可能屬于同一個線程組,也可能不屬于同一個線程組)傳遞變量。?

      其中一種方法就是使用屬性。屬性為所有?JMeter?線程所共享,因此當某個線程設置一個屬性后,其他線程就可以讀取更新后的值。

      如果存在大量數據需要在線程間傳遞,那么可以考慮使用文件。例如,測試人員可以在一個線程中使用監聽器,保存響應到文件(Save?Responses?to?a?file?)或者?BeanShell?PostProcessor?。而在另外一個線程中使用HTTP?采樣器的“file:?”協議來讀取文件,接著使用一個后置處理器或者BeanShell?測試元件提取信息。?

      如果在測試啟動前測試人員就能獲得測試數據,那么最好將數據保存到文件中,使用CSV?Dataset讀取。

    ?

    ----------------------------------------

    這最后一個技巧,操作較為麻煩,暫時不給詳細的例子。算是提供個思路吧!知道有這當子事兒就行了。日后有機會再實踐^_^

    總結

    以上是生活随笔為你收集整理的JMeter基础之-使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。