jmeter與長鏈接壓測

jmeter是設計成作負載測試和性能評估的java應用。它可以測試的類型包括html

  • Web - HTTP,HTTPSjava

  • SOAP / REST 服務git

  • FTPgithub

  • 經過JDBC的數據庫shell

  • LDAP數據庫

  • 基於JMS的面向消息的中間件apache

  • 郵件 - SMTP(s),POP3(s)以及IMAP(s)bash

  • shell腳本服務器

  • TCP性能

  • java對象

如下以TCP爲主

GUI界面簡介

下載完jmeter以後,進入jmeter源碼目錄

⇒  ls
LICENSE        NOTICE         README.md      bin            docs           extras         lib            licenses       printable_docs
複製代碼

在當前目錄下執行命令 ./bin/jmeter即可以看到圖形化的界面

jmeter概念

ThreadGroup

線程組是是全部測試計劃的起點。一切的controller和sampler都必須在線程組下面,其它的元素,好比listener,可能直接放在了測試計劃下面,這種狀況下它就適用於全部的線程組。線程組控制着

  1. 線程的數量

  2. 線程所有啓動的時間

  3. 執行測試的次數

Pre-Processor

在sampler請求以前執行,通常它用來修改設置或者更新一些變量

Samplers

用來發送請求給服務器,而且等待結果,Jmeter的sampler包括

  • FTP request

  • HTTP request

  • JDBC request

  • java object request

  • JMS request

  • JUnit Test request

  • Mail request

  • OS Process request

  • TCP request

Assertion

用來校驗請求的返回結果

configuration

它會被添加到請求,或者是修改請求

Post-Processor

在sampler執行以後執行

logic controller

自定義jmeter在發送請求時的一些處理邏輯

Listener

用來獲取jmeter運行時蒐集的信息,好比 Graph Result listener用來繪製返回時間

Timer

在每一個sampler執行前,延遲一段時間執行

Properties

JMeter的Properties定義在了 jmeter.properties,它是全局的

variables

它對於每一個線程來講都是本地的,若是在一個線程裏面改變了,僅影響這個線程

Jmeter的scope

jmeter的測試結構既是分層的又是順序的,一些元素是嚴格按照層次來的,好比(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers),一些是按照順序來的,好比(controllers, samplers)

  1. 一個典型的按照順序執行的測試樹以下,它的請求順序是 One Two Three Four。

  2. 受層次影響的測試樹,Assertion #1 僅用於 One,而 Assertion #2則是用於 TWO和Three

  3. 加上timer以後, Timer #1 會用於 Two/Three/Four,Assertion # 1則僅會用於Three,而 Timer #2則會影響全部的請求

能夠簡要的理解成 子集功能只能給當和他同一級目錄和他的子集使用,其它的是按照順序執行

執行順序說明

總的來看,執行順序是

  1. Configuration elements

  2. Pre-Processors

  3. Timers

  4. Sampler

  5. Post-Processors (除非SampleResult 是 null)

  6. Assertions (除非SampleResult 是 null)

  7. Listeners (除非SampleResult 是 null)

好比如下的測試計劃

  • Controller

    • Post-Processor 1

    • Sampler 1

    • Sampler 2

    • Timer 1

    • Assertion 1

    • Pre-Processor 1

    • Timer 2

    • Post-Processor 2

它的執行順序就是

Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1

Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1
複製代碼

圖形界面

經過圖形界面配置好的結果,保存下來後,能夠再經過./bin/jmeter -t xxx.jmx的方式打開。

保存配置的方式爲 找到應用目錄 File -> save test plan as 便可

啓動測試操做以下

中止測試操做以下

對於左側欄也提供了展開和收起

線程組的界面以下

若是想經過非圖形界面的方式啓動,則可使用 ./bin/jmeter-server 來執行,遠程測試能夠經過添加 -Jremote_hosts 的方式來添加服務列表 遠程測試詳情戳這裏

監控結果

若是須要測試完成後自動產生圖形界面的結果,能夠執行

./jmeter -n -t ~/Desktop/MyServerHandler.jmx -l ~/Desktop/MyServerHandlerLog.txt -e -o ~/Desktop/MyserverHandlerReport
複製代碼
  • ~/Desktop/MyServerHandlerLog.txt是一個存儲結果的空文件

  • ~/Desktop/MyserverHandlerReport 是一個存儲監控結果的空

  • ~/Desktop/MyServerHandler.jmx 經過界面配置生成的壓測計劃

若是已經執行完了,日誌放在了 MyServerHandlerLog.txt 中,能夠經過命令直接產生

/bin/jmeter -g MyServerHandlerLog.txt -o ./MyserverHandlerReport
複製代碼

能夠在 bin/user.properties 文件定製相關的內容

jmeter體驗測試案例

nettyServer長鏈接服務提供了簡單的心跳和echo服務,經過啓動配置好的jmx

就能夠看到對應的界面,而後開始壓測

附錄

jmeter官方主頁

jmeter的監控

jmeter的基本元素

相關文章
相關標籤/搜索