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

Posted by YoungWoo Kim on
URL: http://ngrinder.373.s1.nabble.com/Database-TPS-tp1584.html

안녕하세요.

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    


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