2. DBMS이야기/01. PostgreSQL

pgbench를 이용한 데이터베이스 성능 검사

ioseph 2016. 3. 21. 10:04

ᇂ1. 데이터베이스 성능이란

일반적으로 tps 초당 트랜잭션 수로 이야기함

문제는 트랜잭션의 정의가 모호함


2. PostgreSQL & pgbench

pgbench 는 기본적으로 tpc-b type 트랜잭션을 제공함

tpc-b type은 클라이언트 - 서버 환경의 구시대 유물이 되었음


3. 아직도 pgbench 가 중요한 이유

그럼에도 불구하고, 데이터베이스 서버가 운영되고 있는 호스트의 하드웨어 사양과

postgresql.conf 설정을 최적의 상태로 만들어 갈 지표를 찾는데, 이주 편한 도구 임


4. 작업 방법

최대 288 클라이언트까지 테스트할 계획임으로

pgbench -i -s 500 으로  자료를 초기화함

pgbench -T 600 -c 클라이언트수 -j 쓰레드수

형태로 클라이언트수와 쓰레드수를 동일하게 해서

해당 호스트의 core 수의 배수로 600초 (5분) 동안 부하를 주고 그 결과를 수집함


for i in `seq 8 8 288`

do

pgbench -T 600 -c $i -j $i > $i.result

done

grep '.....' *.result


5. gnuplot으로 차트 만들기

set title 'pgbench -T 600'

set grid

set terminal png size 640, 480

set output 'pgbench.png'

set xlabel 'clients' x,y

set ylabel 'tps' x,y

plot 'pgbench.result' with lines title '9.5', 'pgbench.result' using 1:3 with lines title '9.4', 'pgbench.result' using 1:4 with lines title '9.5'



6. 차트 읽기

해당 검사에서 최대 성능을 냈던 구간은 모든 버전에서 56-72 구간임

즉, 8 core 환경에서 코어 당 8배 정도의 클라이언트를 수용할 때 최적의 성능을 냄을 알 수 있음(tpc-b 타입 트랜잭션인 경우)


7. 그 외 빠진 이야기

해당 작업은 반드시 OS 모니터링도 함께 진행되어야 함

CPU, 메모리, 디스크I/O, 네트워크 I/O도 함께 봐야 함


8. 마무리

전체적으로 PostgreSQL 버전별 tps 값은 9.5가 제일 낮았음.

병목 구간에서는 일정하게 각 버전별로 성능 차이가 있음

해당 차트로 짤 수 있는 전략

해당 DB 서버로는 최대 100 이하의 클라이언트가 동시에 사용할 수 있도록 하는 것이 최적임

(검사 장비의 하드웨어 사양은 8core, 16G Mem, 10G iscsi HDD)


posted by 김상기