안녕하세요.
많은 도움을 주셔서 테스트 진행에 많은 도움이 되었습니다. 이번에 테스트 해볼 테스트는 평상 부하를 쭉 주는 동안 중간 중간 순간적인 부하를 주는 시나리오를 작성하려는데 도통 머리가 안돌아가네요.ㅠ 각각의 스크립트는 작성해서 개별로 실행은 잘되는데, 하나로 합치는 과정에서 조금 어려움이 있습니다. 아이디어나 조언 부탁 드립니다. 감사합니다. |
Administrator
|
저라면... // 격분마다 load 발생 if (((System.currentTImeMillis / 60000) % 2) == 0) { grinder.sleep(1000); } 이런식으로 로드를 잠시 쉬는 텀을 주겠습니다.
2014년 3월 18일 오전 11:52, mulder [via ngrinder] <[hidden email]>님이 작성: 안녕하세요. |
감사합니다. 말씀해주신 부분 적용하여 스크립트 작성 후 실행하니
아래와 같이 중간중간 약 15-20초 정도 딜레이 후에 스크립트를 수행하는 현상이 발생되어 문의 드립니다. 지속적인 부하를 계속 주다가 60초 마다 순간 부하를 주려고 했습니다. 소스나 세팅에 문제가 있는지 한번 확인 부탁 드립니다. 감사합니다. # -*- coding:utf-8 -*- from net.grinder.script import Test from net.grinder.script.Grinder import grinder from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest from org.slf4j import LoggerFactory from ch.qos.logback.classic import Level from ch.qos.logback.classic import Logger from java.lang import System control = HTTPPluginControl.getConnectionDefaults() connectionDefaults = HTTPPluginControl.getConnectionDefaults() httpUtilities = HTTPPluginControl.getHTTPUtilities() test1 = Test(1, "Login stress") test2 = Test(2, "common stress") request1 = HTTPRequest() request2 = HTTPRequest() test_host = "http://www.google.co.kr/" request1 = test1.wrap(HTTPRequest(url=test_host)) request2 = test2.wrap(HTTPRequest(url=test_host)) # Make any method call on request increase TPS test1.record(request1) test2.record(request2) test_query_file = "D:\url_all.txt" globalURLList = [] class TestRunner: def __init__(self): grinder.statistics.delayReports=True totalProcessCount = grinder.getProperties().getInt("grinder.processes", 1) totalThreadCount = grinder.getProperties().getInt("grinder.threads", 1) agentNumber = grinder.agentNumber processNumber = grinder.processNumber threadNumber = grinder.threadNumber self.curNumber = (agentNumber * totalProcessCount * totalThreadCount) + (processNumber * totalThreadCount) + threadNumber; self.urlCount = 0 if self.urlCount == 0 : fpQuery = open(test_query_file, "r") for line in fpQuery: globalURLList.append(line) self.phase1CompleteBarrier = grinder.barrier("Phase 1") def __call__(self): #thread number tid = grinder.threadNumber #unique thread if tid % 7 == 1: self.test_host = "http://www" self.statichost = "http://www" elif tid % 7 == 2: self.test_host = "http://www" self.statichost = "http://www" elif tid % 7 == 3: self.test_host = "http://www" self.statichost = "http://www" elif tid % 7 == 4: self.test_host = "http://www" self.statichost = "http://www" elif tid % 7 == 5: self.test_host = "http://www" self.statichost = "http://www" elif tid % 7 == 6: self.test_host = "http://www" self.statichost = "http://www" else: self.test_host = "http://www" self.statichost = "http://www" result2 = request1.GET(self.test_host) if result2.getStatusCode() == 200 : grinder.statistics.forLastTest.success = 1 elif result2.getStatusCode() in (301, 302) : grinder.logger.warn("Warning. The response may not be correct. The response code was %d." % result2.getStatusCode()) grinder.statistics.forLastTest.success = 1 else : print(result2.getStatusCode()) grinder.statistics.forLastTest.success = 0 #phase 1 start mils = System.currentTimeMillis() # run every 60000(1 minute) if (mils / 60000) % 2 == 0 : result1 = request1.GET(globalURLList[self.curNumber]) if result1.getStatusCode() == 200 : grinder.statistics.forLastTest.success = 1 elif result1.getStatusCode() in (301, 302) : grinder.logger.warn("Warning. The response may not be correct. The response code was %d." % result1.getStatusCode()) grinder.statistics.forLastTest.success = 1 else : print(result1.getStatusCode()) grinder.statistics.forLastTest.success = 0 self.phase1CompleteBarrier.await() |
Administrator
|
self.phase1CompleteBarrier.await() 를 제거해 보세요. 2014-03-18 16:25 GMT+09:00 mulder [via ngrinder] <[hidden email]>: 감사합니다. 말씀해주신 부분 적용하여 스크립트 작성 후 실행하니 |
Free forum by Nabble | Edit this page |