1. 程式人生 > >JMeter - CSV資料集配置與Redis資料集配置 - 吞吐量比較

JMeter - CSV資料集配置與Redis資料集配置 - 吞吐量比較

在這篇文章中,我想向您展示如何在JMeter中使用Redis資料集配置以及它如何影響測試的吞吐量。

Redis的:

Redis代表RE mote DI ctionary S erver 。它是一個開源  的記憶體 資料結構儲存資料庫。它將各種資料結構(如String,Map,Lists,Sets等)儲存為Key值對。由於它是一個記憶體資料庫,它將所有資料儲存在RAM中(但它也可以定期在磁碟中寫入資料)。因此,在讀取/寫入資料時,您可以獲得顯著的效能提升。

目標:

我的目標是看看redis如何與JMeter一起使用來儲存我的測試資料而不是CSV檔案,並瞭解當我使用Redis而不是CSV時我將在測試中產生的影響!

為何選擇Redis:

我們大多數人都希望將JMeter測試的測試資料儲存在CSV檔案中。即使CSV檔案是一個非常好的選擇 - 通過使測試資料遠離測試指令碼,在分散式模式下使用JMeter時,管理變得非常困難。您可能知道,JMeter只是在所有從站中執行相同的jmx檔案。因此,您的JMeter測試依賴的CSV檔案也應該被複制到所有從屬伺服器!有時,slave2使用的測試資料不應由slave2使用[由於您的應用程式設計]。在這種情況下,您需要將CSV檔案拆分為每個從站的多個檔案,並將它們移動到從屬計算機以成功執行測試。

Redis將是JMeter分散式模式測試的絕佳選擇,因為它可以為所有從站提供資料。

CSV資料集配置:

  • 首先,我建立一個包含100,000條記錄的非常簡單的CSV檔案。

CSV作家

  • 我建立了一個簡單的JMeter測試來讀取CSV檔案,如下圖所示。

CSV-測試規劃-01

  • 現在只需在非gui模式下執行此測試。

CSV執行

  • 我的天啊!!具有CSV資料集配置的JMeter可以在一秒內讀取100K記錄。

Redis資料集配置:

現在讓我們使用Redis Data Set Config進行類似的測試。

  • 首先確保安裝了“Redis Data Set Config”外掛。
    • 在撰寫本文時,JMeter外掛管理器無法正確安裝Redis外掛。Redis jar缺少屬性檔案。所以它不起作用。
    • 使用此連結  下載額外的lib集。它具有Redis Data Set Config的工作版本。
  • 確保已安裝Redis並且能夠訪問它。點選這裡 安裝。
  • 讓我們像在CSV中那樣在Redis中建立100,000條記錄。

jedis-LPUSH

  • 我建立了一個非常簡單的測試來使用Redis資料集配置而不是CSV。其他一切都保持不變。

Redis的,測試計劃

  • 以非gui模式執行測試。

Redis的執行

  • 就我而言,JMeter能夠在一秒鐘內讀取大約2300條記錄,這是可以的。

注意:

  • 我確信Redis吞吐量不佳的原因是由於網路延遲,因為我在一臺單獨的機器上執行Redis伺服器。JMeter連線到redis伺服器以獲取資料。
  • 我的JMeter測試中只有一個執行緒在執行。因此,JMeter會向Redis傳送100,000個請求以按順序讀取資料。  
  • 我可以通過在同一臺機器上執行JMeter和Redis來進行類似的測試,其中效能會好得多。但我的目標是看看Redis如何用於JMeter分散式測試。在這種情況下,Redis必須在一臺單獨的機器上執行。這就是我用這種方式測試的原因。如果你不這麼認真,請糾正我!
  • 我會建議你做類似的測試並自己比較一下你的表現。結果可能與您完全不同,並根據您的機器配置而有所不同。 

概要:

我期待這個結果,因為CSV檔案將在您的本地,而Redis DB正在我的網路中的其他地方執行。網路延遲將在Redis吞吐量中發揮重要作用。因此,CSV檔案讀取將比Redis更好。然而,CSV讀取比Redis好40倍,這是令人驚訝的。我試圖與大家分享這些資訊,以便在建立JMeter測試以測試高吞吐量應用程式時可以非常小心。正如我一直在說的那樣,我們都需要注意我們在測試中添加了哪些元素。