This post was updated on .
안녕하세요.
Mysql Database를 성능 테스트를 진행하고 스크립트를 작성 중에 TPS가 증가하지 않는 현상이 있어 문의 드립니다. 정상적으로 쿼리가 수행되어 결과를 받았으며, Test 진행 후 TPS가 증가하지 않아, 성능 테스트도 중지되는 현상이 있습니다. Validatdate Script 시에도 TPS가 0으로 찍히고, 성능 테스트를 수행하면, TPS 그래프가 나타나지 않고 빨간색으로 멈추게 됩니다. 하지만 수행한 Agent로그를 보면 정상적으로 결과를 주고 받은것을 확인하였습니다. 아래 작성된 스크립트 공유 드립니다. 확인 부탁드리겠습니다. Database : mysql 작성 스크립트 : python ----스크립트---------------------------------------------------------------------- # -*- coding:utf-8 -*- # Database test. # from java.sql import DriverManager from java.sql import CallableStatement from com.mysql.jdbc import Driver from net.grinder.script.Grinder import grinder from net.grinder.script import Test from java.util import Random from java.lang import System log = grinder.logger.info err = grinder.logger.error # Parameters DB_connect = "jdbc:mysql://***보안상가림****:****/**보안상가림***" DB_user = "***보안상가림****" DB_password = "***보안상가림****" test1 = Test(1, "GaleraCluster") # Load the JDBC driver. DriverManager.registerDriver(Driver()) def getConnection(): return DriverManager.getConnection(DB_connect, DB_user, DB_password) def ensureClosed(object): try: object.close() except: pass connection = getConnection() statement = connection.createStatement() statement = test1.wrap(statement) test1.record(statement) class TestRunner: def __init__(self) : grinder.statistics.delayReports=True pass def __call__(self): result = statement.execute("SELECT **보안**** FROM **보안*** WHERE ***보안** = '0000000001'") result = statement.executeQuery("call ProcudreName('1000000003','1000000003', 'test1000000003')") result.next() self.checkResponse(result, "***보안********") def checkResponse(self, result, url) : log("%s : %s" % (url, result.getString(1))) #grinder.statistics.forLastTest.success = 1 #grinder.statistics.forLastTest.success = 0 self.sleep(1000) def sleep(self, millisecond): """ sleep during the given millisecond. """ grinder.sleep(millisecond) -------스크립트 Validation 결과(일부분만 올립니다.) ----------------------------- 2014-07-17 16:22:27,056 INFO Start time is 1405581747055 ms since Epoch 2014-07-17 16:22:27,083 INFO *****보안******* : 0 2014-07-17 16:22:27,083 INFO sleeping for 879 ms 2014-07-17 16:22:27,962 INFO finished 1 run 2014-07-17 16:22:27,963 INFO elapsed time is 908 ms 2014-07-17 16:22:27,964 INFO Final statistics for this process: 2014-07-17 16:22:27,974 INFO Tests Errors Mean Test Test Time TPS Time (ms) Standard Deviation (ms) Totals 0 0 � 0.00 0.00 ---------------------------------------------------------------------- |
Administrator
|
test1.wrap(statement) 를
test1.record(statement) 로 바꾸셔야 할것 같습니다. 않되심 답글 부탁드려요.
2014-07-17 16:30 GMT+09:00 YoungWoo Kim [via ngrinder] <[hidden email]>: 안녕하세요. |
This post was updated on .
아래와 같이 변경1,변경2 방법3 3가지 방법으로 진행해 보았으나, 역시 TPS는 증가하지 않았습니다.
-기존- statement = test1.wrap(statement) test1.record(statement) -변경1- #statement = test1.wrap(statement) //삭제 test1.record(statement) -변경2- statement = test1.wrap(statement) #test1.record(statement) //삭제 -변경3 #statement = test1.wrap(statement) //삭제 #test1.record(statement) //삭제 test1.wrap(statement) //새로운 시도 |
In reply to this post by junoyoon
안녕하세요~
회신이 없으셔서 다시 문의 드립니다.^^ 우선 groovy로 작성했을 경우에는 정상적으로 TPS가 증가하여, Groovy로 작성 후 성능 테스트를 진행하고 있습니다. python으로 작성 시 동작하지 않는 원인에 대해서는 파악이 어려우실까요? 바쁘시겠지만, 확인 부탁드리겠습니다. 감사합니다. |
In reply to this post by YoungWoo Kim
connection = getConnection()
statement = connection.createStatement() test1.wrap(statement) 을 def __call__(self) 안으로 이동시켜서 해보시겠어요? ----수정된 스크립트---------------------------------------------------------------------- # -*- coding:utf-8 -*- # Database test. # from java.sql import DriverManager from java.sql import CallableStatement from com.mysql.jdbc import Driver from net.grinder.script.Grinder import grinder from net.grinder.script import Test from java.util import Random from java.lang import System log = grinder.logger.info err = grinder.logger.error # Parameters DB_connect = "jdbc:mysql://***보안상가림****:****/**보안상가림***" DB_user = "***보안상가림****" DB_password = "***보안상가림****" test1 = Test(1, "GaleraCluster") # Load the JDBC driver. DriverManager.registerDriver(Driver()) def getConnection(): return DriverManager.getConnection(DB_connect, DB_user, DB_password) def ensureClosed(object): try: object.close() except: pass class TestRunner: def __init__(self) : grinder.statistics.delayReports=True pass def __call__(self): connection = getConnection() statement = connection.createStatement() test1.wrap(statement) result = statement.execute("SELECT **보안**** FROM **보안*** WHERE ***보안** = '0000000001'") result = statement.executeQuery("call ProcudreName('1000000003','1000000003', 'test1000000003')") result.next() self.checkResponse(result, "***보안********") ensureClosed(statement) ensureClosed(connection ) def checkResponse(self, result, url) : log("%s : %s" % (url, result.getString(1))) #grinder.statistics.forLastTest.success = 1 #grinder.statistics.forLastTest.success = 0 self.sleep(1000) def sleep(self, millisecond): """ sleep during the given millisecond. """ grinder.sleep(millisecond) |
Administrator
|
This post was updated on .
In reply to this post by YoungWoo Kim
저도 로직상으로는 별다른 문제를 찾지 못했습니다. 그래서 답변을 못했던 것이구요.
하단의 The Grinder 에서 제공하는 Python의 record 구문이 제가 작성한 Groovy record 와는 조금 다른데, 거기에서 발생한 문제라고만 추측하고 있습니다. 일반적으로는 저는 이런 문제는 Python method 자체를 record 함으로써 해결합니다. class TestRunner: def __init__(self) : grinder.statistics.delayReports=True pass def __call__(self): result = self.executeStatement(statement, "SELECT **보안**** FROM **보안*** WHERE ***보안** = '0000000001'") result = self.executeQuery(statement, "call ProcudreName('1000000003','1000000003', 'test1000000003')") result.next() self.checkResponse(result, "***보안********") def executeStatement(self, statement, query) : statement.execute(query) def executeQuery(self, statement, query) : statement.executeQuery(query) def checkResponse(self, result, url) : log("%s : %s" % (url, result.getString(1))) #grinder.statistics.forLastTest.success = 1 #grinder.statistics.forLastTest.success = 0 self.sleep(1000) def sleep(self, millisecond): """ sleep during the given millisecond. """ grinder.sleep(millisecond) test1.record(TestRunner.executeStatement) test1.record(TestRunner.executeQuery) 2014년 7월 22일 오전 11:21, YoungWoo Kim [via ngrinder] < ml-node+s642n1594h98@n7.nabble.com>님이 작성: > 안녕하세요~ > > 회신이 없으셔서 다시 문의 드립니다.^^ > > 우선 groovy로 작성했을 경우에는 정상적으로 TPS가 증가하여, Groovy로 작성 후 성능 테스트를 진행하고 있습니다. > > python으로 작성 시 동작하지 않는 원인에 대해서는 파악이 어려우실까요? > > 바쁘시겠지만, 확인 부탁드리겠습니다. > > 감사합니다. > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > http://ngrinder.642.n7.nabble.com/Database-TPS-tp1584p1594.html > To start a new topic under ngrinder-user-kr, email > ml-node+s642n113h87@n7.nabble.com > To unsubscribe from ngrinder-user-kr, click here > <http://ngrinder.642.n7.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=113&code=anVub3lvb25AZ21haWwuY29tfDExM3wtNzI2NjYwMzQy> > . > NAML > <http://ngrinder.642.n7.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > |
말씀해주신 Python Method 자체를 Record 하니, 정상적으로 TPS가 증가하는 것을 확인하였습니다.
바쁘신 와중에 도움 주셔서 정말 감사합니다. ( _ _ ) |
Free forum by Nabble | Edit this page |