Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

YoungWoo Kim
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    


----------------------------------------------------------------------
Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

junoyoon
Administrator
test1.wrap(statement)  를

test1.record(statement) 로 바꾸셔야 할것 같습니다.

않되심 답글 부탁드려요.


2014-07-17 16:30 GMT+09:00 YoungWoo Kim [via ngrinder] <[hidden email]>:
안녕하세요.

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()

test1.wrap(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    


----------------------------------------------------------------------




If you reply to this email, your message will be added to the discussion below:
http://ngrinder.642.n7.nabble.com/Database-TPS-tp1584.html
To start a new topic under ngrinder-user-kr, email [hidden email]
To unsubscribe from ngrinder-user-kr, click here.
NAML

Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

YoungWoo Kim
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) //새로운 시도
Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

YoungWoo Kim
In reply to this post by junoyoon
안녕하세요~

회신이 없으셔서 다시 문의 드립니다.^^

우선 groovy로 작성했을 경우에는 정상적으로 TPS가 증가하여, Groovy로 작성 후 성능 테스트를 진행하고 있습니다.

python으로 작성 시 동작하지 않는 원인에 대해서는 파악이 어려우실까요?

바쁘시겠지만, 확인 부탁드리겠습니다.

감사합니다.
Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

gisoo.gwon
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)
Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

junoyoon
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>
>
Reply | Threaded
Open this post in threaded view
|

Re: Database 성능 테스트 시 TPS가 증가하지 않는 문제 문의 드립니다.

YoungWoo Kim
말씀해주신 Python Method 자체를 Record 하니, 정상적으로 TPS가 증가하는 것을 확인하였습니다.

바쁘신 와중에 도움 주셔서 정말 감사합니다. ( _ _ )