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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何使用 jMeter Parallel Controller - 并行控制器以及一些常犯的错误

發布時間:2023/12/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用 jMeter Parallel Controller - 并行控制器以及一些常犯的错误 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

How to Use the Parallel Controller in JMeter

本文我們將分析 Apache JMeter? 的擴展之一 - 并行控制器(Parallel Controller)。 該控制器由 BlazeMeter 開發,作為對開源社區的貢獻,由 Andrey Pokhilko 和 Artem Fedorov 開發。

并行控制器可用于創建并行請求。 并行請求是指不是一個接一個執行而是同時執行的請求。 例如,在加載腳本中處理 AJAX 請求或執行其他同步操作。

您可以使用 JMeter 插件管理器安裝并行控制器。 它被稱為并行控制器和采樣器。 我們還需要一個 Dummy Sampler 和一個 WebSocket 插件來進行此演示,您也可以在 JMeter 插件管理器中找到它們。 我們將使用 Peter Doornbosch 的 Websocket Samplers。

現在我們將通過幾個例子來看看并行控制器的特性。 讓我們從一個簡單的例子開始。

Using the Parallel Controller - A Simple Example

  • 首先,讓我們將控制器添加到測試計劃中。 添加線程組后:
  • 右鍵線程組->添加->邏輯控制器->bzm-并行控制器

  • 還要在控制器內添加兩個 Dummy Sampler 并將相同的特性應用到它們。
  • 右鍵單擊 Parallel Controller -> Add -> Samplers -> jp@gc Dummy Sampler

    需要采樣器來模擬發送 HTTP 請求。 您可以根據需要添加任何采樣器。 現在腳本如下所示:

    運行這個測試。

    從上面的屏幕截圖中可以看出,兩個請求的開始時間是相同的。 這意味著請求是同時發送的。

    第一個重要注意事項:如果您打開控制臺,您將看到正在運行的線程數已變為 2。 也就是說,這個控制器創建了兩個線程并同時運行它們。

    Using the Parallel Controller - with Multiple Elements

    如果您有多個采樣器需要在一個線程中工作,則需要在邏輯上組合它們。 否則,并行控制器為其每個子元素創建新線程。

    例如,您可以使用 Simple 控制器。 添加它:

    右鍵單擊線程組 -> 添加 -> 邏輯控制器 -> 簡單控制器

    現在,將應該組合的元素放在這個控制器下。

    現在并行控制器將創建 2 個線程:第一個用于 Dummy 1 和 Dummy 2(在第一個簡單控制器下),第二個用于 Dummy 3 和 Dummy 4(在第二個簡單控制器下)。 另外,我們在Parallel Controller后面加了Dummy 5,在這兩組執行完后才會執行。

    Dummy 1 和2 的啟動時間不同,Dummy 5 僅在Dummy 4 執行后才執行。

    第二個重要注意事項:直到所有并行線程完成其工作后,測試的下一部分才會開始。

    Running Threads Simultaneously - The Problem

    第一個注意事項是控制器創建單獨的線程并并行執行它們。 因此,在線程內部相互交互的采樣器可能會出現問題。

    為了演示,我們將使用 WebSocket 插件。 這個插件有一組采樣器,可以通過線程內部的 WebSocket 會話連接。

    如果 session 是在 Parallel 控制器之前創建的,并且采樣器組的工作是在控制器內部執行的,我們會得到一個錯誤。 該錯誤表明 WS Sampler(位于控制器內部)的連接不存在。 您可以在下面的屏幕截圖中看到這一點。

    Running Threads Simultaneously - The Solution

    如果測試計劃中有相關元素,它們應該都放在并行控制器中。

    Running All Parallel Controller Elements Before Moving On in the Test - The Problem

    第二個注意事項是,直到所有并行線程完成其工作后,測試的下一部分才會開始。

    我曾經有過這樣的場景:用戶通過 HTTP 請求獲取大量數據,并通過 Web 套接字接收一段時間的信息。 當時間用完時,劇本說他應該去下一頁。

    這部分的測試如下。 在測試中,時間用完后要轉到的頁面稱為“上次請求”。

    問題是當時間用完時,接收消息的線程確實退出了,但是接收數據的線程直到接收到所有數據才完成運行。

    因此,在數據加載完成之前,線程不會繼續下一步。 但這種行為是錯誤的。 也就是說,需要在并行線程完成后以某種方式中斷第二個線程的執行。

    Running All Parallel Controller Elements Before Moving On in the Test - The Solution

    一些采樣器有一個超時字段。 就我而言,我使用了 HTTP 請求采樣器,它有一個連接超時字段。 這意味著在指定的時間之后,采樣器將完成其工作。 但是這個解決方案太狹隘了。

    另一種解決方案如下。 假設您有一個不同的情況,并且在兩個線程中,您都有一組在循環中執行的請求。 一個線程在接收到某個消息后結束,而第二個線程不知道該消息。 第二個應該在最后一次迭代后完成,您可以使用 Groovy 或 BeanShell 采樣器通過設置變量的必要值來完成此操作。 例如,使用 vars.put(“isEnd”,“true”) 命令變量和‘isEnd’得到一個‘true’值。

    這種情況將如下所示:

    這里我們有兩個并行線程:第一個線程帶有 While 控制器,第二個線程帶有 Loop 控制器(這個控制器代替了消息接收)。 在第二個線程中,在 Loop 控制器之后,您使用 Groovy 或 BeanShell 采樣器設置值。 在第一個線程中,您在 While 控制器的條件中檢查此變量的值,例如,使用以下條件:KaTeX parse error: Expected group after '_' at position 2: {_?_jexl3("{isEnd}"==“true”)}。

    Don’t Run a Parallel Controller in a Parallel Controller

    還有一個無法解決的問題:不能在并聯控制器內部添加并聯控制器。 執行時會收到錯誤。 不要那樣做。

    The Parallel Sampler

    Parallel Sampler 是控制器的輕量級版本,用于創建 Ajax 請求或其他并行 HTTP 請求。 采樣器有一個簡單的界面,如下面的屏幕截圖所示。 您只需要輸入所有并行 URL。

    在處理完所有引用之前,采樣器不會完成執行。 但是如果您想將它用于并行站點頁面,請記住采樣器也會執行網站頁面上的所有鏈接。

    總結

    綜上所述,Parallel Controller 是一個很好的請求并行控制器,對于測試具有并行動作的站點非常有用。 例如,在處理 WebSocket 請求或測試移動應用程序時,可能會有大量并行請求(如心跳請求)。 除了控制器,我們還有Parallel Sampler,可以用來創建并行的HTTP請求,極大地方便了腳本的結構,非常適合并行Ajax請求。

    更多Jerry的原創文章,盡在:“汪子熙”:

    總結

    以上是生活随笔為你收集整理的如何使用 jMeter Parallel Controller - 并行控制器以及一些常犯的错误的全部內容,希望文章能夠幫你解決所遇到的問題。

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