nGrinder測(cè)試配置 - 如何通過(guò)線(xiàn)程逐步提升壓力

通過(guò)性能測(cè)試配置遞增線(xiàn)程

除了Grinder引擎提供的進(jìn)程斜坡之外,nGrinder 3.3還支持線(xiàn)程斜坡。因?yàn)檫M(jìn)程是非常昂貴的資源,在單個(gè)核心機(jī)器中,大約10是可執(zhí)行進(jìn)程的最大計(jì)數(shù)。因此,到目前為止,流程漸變只支持非常有限的漸變(從0到10)。在nGrinder 3.3中,可以通過(guò)配置啟用線(xiàn)程斜坡。因?yàn)槊總€(gè)進(jìn)程可以執(zhí)行100多個(gè)線(xiàn)程,這使得過(guò)渡比進(jìn)程過(guò)渡非常平穩(wěn)。

線(xiàn)程漸進(jìn)

通過(guò)在右上角選擇線(xiàn)程并在vuser部分提供足夠的線(xiàn)程數(shù),圖表將顯示平滑的漸變圖表。執(zhí)行測(cè)試之后,您可以在詳細(xì)的報(bào)告中看到如下結(jié)果。隨著時(shí)間的推移,vuser的數(shù)量也在增加,TPS也在增加。

性能分析圖

通過(guò)腳本遞增線(xiàn)程

3.3版本之前的nGrinder支持進(jìn)程漸變作為默認(rèn)特性。如果用戶(hù)希望逐步增加負(fù)載,那么用戶(hù)可以在測(cè)試配置頁(yè)面的過(guò)渡面板上設(shè)置許多進(jìn)程以及如何增加它們。

image.png

這是一個(gè)漸進(jìn)的過(guò)程。如果您喜歡在過(guò)渡過(guò)程中執(zhí)行10個(gè)步驟,那么您應(yīng)該將流程計(jì)數(shù)設(shè)置為至少10個(gè)步驟。如果需要更多,應(yīng)該設(shè)置更多進(jìn)程數(shù)量。

但是,這些流程需要調(diào)用大量資源。代理中的100個(gè)進(jìn)程是不現(xiàn)實(shí)的。這會(huì)導(dǎo)致代理機(jī)器內(nèi)存不足錯(cuò)誤。

假設(shè)你想知道系統(tǒng)從哪個(gè)TPS水平開(kāi)始飽和。

在這種情況下,您可以使用線(xiàn)程級(jí)別漸變。您只需要在腳本中添加以下代碼。

Jython

# -*- coding:utf-8 -*-

# A simple example using the HTTP plugin that shows the retrieval of a
# single page via HTTP.
#
# This script is auto generated by ngrinder.
#

from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
from net.grinder.plugin.http import HTTPRequest
from net.grinder.plugin.http import HTTPPluginControl
from HTTPClient import NVPair

control = HTTPPluginControl.getConnectionDefaults()
control.setTimeout(30000)

test1 = Test(1, "Test1")
request1 = HTTPRequest();
test1.record(request1)

class TestRunner:
  def initialSleep( self ):
      sleepTime = grinder.threadNumber * 1000  # 1 seconds per thread
      grinder.sleep(sleepTime, 0)

  def __call__( self ):
      if grinder.runNumber == 0: self.initialSleep()

      grinder.statistics.delayReports=True
      result = request1.GET("http://www.google.com")

      if result.getText().find("Google") != -1 :
          grinder.statistics.forLastTest.success = 1
      else :
          grinder.statistics.forLastTest.success = 0

Groovy

如果您使用的是nGrinder 3.2.3或更高版本,那么應(yīng)該在代碼中加入sleep邏輯。

/**
 * A simple example using the HTTP plugin that shows the retrieval of a
 * single page via HTTP.
 *
 * This script is auto generated by ngrinder.
 *
 * @author ${userName}
 */
@RunWith(GrinderRunner)
class Test1 {

    public static GTest test;
    public static HTTPRequest request;

    @BeforeProcess
    public static void beforeClass() {
        test = new GTest(1, "aa000000");
        request = new HTTPRequest();
        test.record(request);
        grinder.logger.info("before process.");
    }


    @BeforeThread
    public void beforeThread() {
        grinder.statistics.delayReports=true;
        grinder.logger.info("before thread.");

    }

    public void initialSleep() {
        grinder.sleep(grinder.threadNumber * 1000, 0)
    }

    @Test
    public void test(){
        if (grinder.runNumber == 0) {
           initialSleep()
                }
        HTTPResponse result = request.GET("http://www.google.com");
        if (result.statusCode == 301 || result.statusCode == 302) {
            grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode);
        } else {
            assertThat(result.statusCode, is(200));
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 測(cè)試列表 用戶(hù)可以在此頁(yè)面中創(chuàng)建/停止/刪除測(cè)試。球的顏色會(huì)根據(jù)測(cè)試狀態(tài)而改變,每5秒刷新一次。通過(guò)懸停它,您可以...
    DreamsonMa閱讀 6,183評(píng)論 1 1
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,626評(píng)論 1 32
  • Java繼承關(guān)系初始化順序 父類(lèi)的靜態(tài)變量-->父類(lèi)的靜態(tài)代碼塊-->子類(lèi)的靜態(tài)變量-->子類(lèi)的靜態(tài)代碼快-->父...
    第六象限閱讀 2,247評(píng)論 0 9
  • 性能測(cè)試是利用產(chǎn)品、人員和流程來(lái)降低應(yīng)用程序、升級(jí)程序或補(bǔ)丁程序部署風(fēng)險(xiǎn)的一種手段。性能測(cè)試的主要思想是通過(guò)模擬產(chǎn)...
    羽墨_99e8閱讀 3,144評(píng)論 0 10
  • 進(jìn)程和線(xiàn)程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對(duì)應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過(guò)程中...
    勝浩_ae28閱讀 5,256評(píng)論 0 23

友情鏈接更多精彩內(nèi)容