'성능테스트'에 해당되는 글 1건

  1. 2011.08.16 DB 성능 테스트 방법론

최근에 DB 성능 테스트를 어떻게 하냐고 물어본 분이 계셔서 기억나는데로 언급하고자 한다.
(오래되서 기억이 잘 안나서. 기억나는 것만 체크)

웹 개발자로서 내가 했던 참여 했던 테스트는 총 3가지이다. 보면 알겠지만, 대부분 기존 DB의 가용량과 연관된 테스트였다. 이런 테스트에 참여했다는 게 자체가 사실 영광스럽기는 하다.

1. Oracle RAC
2. Sequoia(지금은 Tungsten)
3. 사내 DB 미들웨어 


DBA의 관점에서 진행하는 것이 아닌. 웹 서버에서 보낸 쿼리를 기반으로 하였다. 일반적인 IO 테스트가 아닌 쿼리 테스트의 관점에서 보는 것이 더 좋을 것 같다. IO 테스트는 DBA나 관련 시스템 엔지니어가 훨씬 더 많이 알 것 같다.
(예, 넥슨 DB팀의 SSD 테스트 http://nexondbteam.tistory.com/55.
큐브리드의 mysql SSD 성능 테스트 http://www.cubrid.org/ssd_performance_test)

또한 기본적인 기능 테스트는 당연히 해야하기 때문에 그냥 패쓰..


내가 측정하려고 했던 것은 웹 서버에서 엄청나게 많은 쿼리를 날렸을 때, DB나 미들웨어가 잘 버텨주는 지에 대한 테스트였다.


0. 철저한 계획
아마도 이 부분이 중요했던 것 같다. 사람들을 설득하고. 어떻게 진행할 것인지 얘기


1. 웹 서버에서는 해야할 일
(1)  개발 DB에 리얼 DB에 있는 데이터를 그대로 덤프해서 저장
    Row개수, index까지 똑같이
(2) 간단한 쿼리 테스트는 기본
(3) Transaction/procedure/join 테스트는 빼먹지 않기
(4) CLOB/한글 이슈 확인 - 응근히 이것을 테스트를 놓치기도 함. 골치 아파짐
   => 결국은 웹 서버나 게임서버에서 사용하는 모든 쿼리 테스트를 진행해야 한다.
(5) PrepareStaement 테스트 진행 (예전 버전의 Sequoia는 된다고 해놓고. 실제로는 지원이 안되었다.)
(6) PrepareStatement 테스트시 Hard 하게 테스트
    (DB의 prepared statement cache size를 넘어서도록 한다. 그래서 항상 DB콜을 할 수 있도록 테스트 환경 구축)
(7) DBA와 충분히 얘기 - 내가 못보는 부분을 DBA입장에서 보도록 함
(8) 웹서버의 bottleneck을 없도록 해서 DB의 성능이 최대한 나오게 개발
(9) 웹 서버는 최대한 많이 두고, 한 서버에 cpu개수 만큼의 JVM Instance(웹 어플리케이션 서버)를 구축

2. 구축환경
load runner   혹은       - >   웹 서버   ->   DB  혹은 DB 미들웨어
성능 테스트툴


3. DB 혹은 DB 미들웨어
(1) 가용성 테스트. (Active-Standby 테스트 : 문제없이 동작되는지 확인)
    - 간단한 테스트
    (프로세스 Kill /  iptables 블락 /  랜선 빼기)
     - Active한 서버를 내리고, Standby가 Active로 잘 돌아가는 지 확인
     - Reconnect 를 통한 fail over 검증 필요
 
(2) 성능 
    - 물리 서버의 성능에 비례, 좋은 장비는 최고의 퍼포먼스
    - 가용량 산정. Throughput 산정 가능
   
(3)  기능 테스트
    - reconnect
    - timeout
    - connection pooling
      connection을 pooling하고 있는데. DB에서 session kill를 하고 나서, 어떻게 하는지 확인

(4) QPS (query per second) 측정
      job queue에 쌓이는 시점을 발견해야 함.. (임계점)
      -> 안정 구간이 얼마정도인지 확보



'DB' 카테고리의 다른 글

[mysql] 테스트용 사용자 계정 추가  (0) 2011.10.24
mysql jdbc driver timeout 정보  (1) 2011.09.06
DB 성능 테스트 방법론  (0) 2011.08.16
OSCON Data 2011, Brian Aker, "Living In A Relational World"  (0) 2011.07.27
cubrid DB 관련 정보  (0) 2011.06.22
[Mysql] 운영 잘하기  (0) 2011.05.19
Posted by 김용환 '김용환'