본문 바로가기

Database/PostgreSQL

처음 사용자를 위한 PostgreSQL 사용 샘플 - 7. HammerDB를 이용한 부하테스트

"처음 사용자를 위한 PostgreSQL 사용 샘플"이라는 제목의 시리즈로, 저처럼 PostgreSQL을 처음 접하는 사용자를 위한 기본적인 개념, 사용 샘플을 설명드립니다.

이전글

[Database/PostgreSQL] - 처음 사용자를 위한 PostgreSQL 사용 샘플 - 6. Replication - WAL Streaming

 

아래 자료를 참조했습니다.

PostgreSQL Domcumentation
The Internals of PostgreSQL
PostgreSQL Tutorial

HammerDB 설치, 실행 환경 설정

이전 글에서는 PostgreSQL로 Replication 구성까지 해 보았습니다. 이번에는 벤치마크 테스트 유틸리티 HammerDB로 PostgreSQL에 대한 부하테스트를 수행해 보겠습니다. 

먼저 HammerDB 설치 파일을 "wget https://github.com/TPC-Council/HammerDB/releases/download/v4.1/HammerDB-4.1-Linux-x64-installer.run" 다운로드 받고, "chmod 700 HammerDB-4.1-Linux-x64-installer.run" 명령으로 실행 권한을 부여합니다.

 

DB 유저(OS 유저 아님) postgres 유저의 패스워드를 변경합니다. 이는 이후 HammerDB 스키마 부하를 생성할 때 DB 유저 postgres 패스워드가 필요하기 때문입니다. "alter user postgres with password 'postgres';"와 같이 실행합니다.

 

HammerDB는 명령어로도 실행할 수 있지만, 설치와 실행 시 GUI 환경을 사용하는 것이 편리할 때가 많습니다. 여기서는 HammerDB를 GUI 환경으로 설치, 실행 하겠습니다. 이를 위해 PuTTy와 TigerVNC Viewer로 SSH Tunneling을 해서 서버에 접속하겠습니다. 이전 글에서 구성한 Replication까지 포함하여 아래와 같은 설정으로 테스트를 진행합니다.

현재 테스트 환경은 OCI (Oracle Cloud Infrastructure) 입니다. OCI에서 VNC 설정 방법은 아래 링크를 참조하시면 됩니다.

OCI VM에서 VNC 설정 방법

 

VNC 설정을 하고 PostgreSQL이 설치된 서버에 접속해서 HammerDB 설치 파일을 "./HammerDB-4.1-Linux-x64-installer.run"로 실행합니다.

 

설치 화면이 아래와 같이 로딩됩니다. GNU GENERAL PUBLIC LICENSE 에 동의하고, 설치 디렉토리를 지정 (디폴트 /opt/HammerDB-4.1)하면 설치가 완료됩니다.

 

설치가 끝나면 아래와 같은 화면을 볼 수 있습니다. HammerDB 창을 닫습니다.

 

HammerDB 실행을 위해서는 HammerDB 설치된 root 유저에서 PostgreSQL 접속할 있어야 합니다. 이를 위한 환경 설정을 하고, HammerDB 실행해야 합니다.

터미널을 하나 열어서 아래와 같이 환경 변수를 설정합니다.

# PostgreSQL Server Environment Vaiable Settings
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:/usr/pgsql-14/lib
export PATH=$ORACLE_HOME/bin:/usr/pgsql-14/bin:$PATH

 

"source .bash_profile" 등으로 환경 변수 설정을 반영하고 HammerDB를 실행합니다.

 

HammerDB 실행

왼쪽 Benchmark 메뉴의 "PostgreSQL"을 더블 클릭합니다.

 

HammerDB로 PostgreSQL에 벤치마크 테스트를 수행할 스키마를 생성합니다. PostgreSQL > TPROC-C > Schema Build > Options을 클릭합니다. Warehouse 단위로 스키마의 크기를 정하게 되는데, 여기서는 10으로 설정을 했고, 2개 Vitual User가 이를 수행해도록 설정했습니다. "OK"를 클릭하여 설정을 마친 후 Build를 클릭해서 설정한 내용을 로딩해야 합니다.

 

Build를 클릭해서 Schema Build 설정 내용을 확인하며, 데이터 생성이 시작됩니다.

 

스키마 생성이 완료되었습니다.

 

스키마 생성이 완료되고 나서 PostgreSQL에 접속해 보면 "tpcc"라는 데이터베이스가 만들어져 있음을 알 수 있습니다. "\c tpcc" 명령으로 해당 데이터베이스 연결 후 내 테이블 사이즈는 아래와 같은 쿼리로 확인합니다.

select table_name, pg_relation_size(quote_ident(table_name))
from information_schema.tables
where table_schema = 'public'
order by 2;

 

스키마 생성이 완료되고 나면 부하테스트 설정을 할 차례입니다. PostgreSQL > TPROC-C > Driver Script > Options 화면에서 설정합니다. 전체 수행할 트랜잭션의 양 또는 수행할 시간 등을 설정할 수 있습니다. 설정 후 Load를 더블 클릭해서 설정한 내용을 로딩해야 합니다.

 

PostgreSQL > TPROC-C > Virtual User > Options 화면에서 부하를 수행할 가상 유저에 대해 설정합니다. 여기서는 4 Virtual User로 나머지 항목은 기본값으로 수행했습니다.

 

HammerDB가 수행 중일 때 pgAdmin Dashboard 화면에서 세션 정보 등의 부하 상황에 대한 모니터링을 할 수 있습니다.

 

Standby DB에 접속해서 살펴보면, Primary DB와 동일하게 "tpcc" 데이터베이스에 스키마가 생성되어 있는 것을 확인할 수 있습니다.

 

<끝>