HammerDB로 PostgreSQL 성능 테스트하기

이세현·2024년 8월 5일
0

Postgresql_Monitoring

목록 보기
6/8

Server 할당 후 PG 설치

AWS EC2 프리티어 설정

Red Hat 9 서버 할당

키 페어, 보안 그룹 설정

1. 키 페어 (Key Pair)

  • 접근 제어: EC2 인스턴스에 SSH를 통해 안전하게 접속하기 위해 키 페어를 사용합니다. 키 페어는 공인 키와 개인 키로 구성되며, 개인 키는 안전하게 보호되어야 합니다.

  • 보안 강화: 비밀번호 대신 키 페어를 사용함으로써 brute-force 공격에 대한 저항력을 높일 수 있습니다. 개인 키는 외부에 노출되지 않으므로 보안성이 향상됩니다.

2. 보안 그룹 (Security Group)

  • 네트워크 접근 제어: 보안 그룹은 EC2 인스턴스에 대한 트래픽을 필터링하는 가상 방화벽 역할을 합니다. 인바운드 및 아웃바운드 규칙을 설정하여 어떤 IP 주소와 포트에서 트래픽을 허용할지를 정의합니다.
  • 상태 기반 필터링: 보안 그룹은 상태 기반으로 작동하므로, 요청이 수신되면 응답에 대해 자동으로 허용됩니다. 이를 통해 보다 유연한 네트워크 관리가 가능합니다.
  • 보안 정책 구현: 특정 서비스(예: 웹 서버, 데이터베이스 서버)와 관련된 포트만 열어두어 최소한의 접근만 허용함으로써 보안을 강화할 수 있습니다.



EC2 접속 후 PG16 설치

EC2 접속

vi /etc/ssh_config 접속 후

#User ""
ForwardAgent no
Compression yes
PreferredAuthentications hostbased,publickey,password,keyboard-interactive
ForwardX11 yes
ForwardX11Trusted yes
NoHostAuthenticationForLocalhost yes
StrictHostKeyChecking no
CheckHostIP no
UseRoaming no
wq!

ssh -i <pem.key path> ec2-user@<퍼블릭 DNS>

Postgresql 설치

Postgresql 다운로드 링크 :클릭

sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf install -y postgresql16-server

sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

sudo -i -u postgres
psql

DBeaver로 PG 접속 확인

보안 그룹

인바운드 규칙 편집

postgresql.conf 수정

  • 역할: PostgreSQL 서버의 전반적인 설정을 관리하는 파일입니다.
  • 구성: 서버의 포트, 데이터 디렉터리 경로, 로그 설정, 메모리 할당 등 다양한 서버 동작 방식을 설정할 수 있습니다.
cd $PGDATA
vi postgresql.conf

#listen_address = 'localhost'(수정 전)
listen_address = '*' (수정 후)

pg_hba.conf 수정

  • 역할: PostgreSQL 데이터베이스에 대한 클라이언트 인증을 설정하는 파일입니다.
  • 구성: 이 파일에서는 어떤 호스트가 데이터베이스에 접근할 수 있는지, 어떤 사용자에게 접근 권한을 부여할 것인지, 어떤 인증 방법을 사용할 것인지를 정의합니다.
cd $PGDATA
vi pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             내 IP(보안그룹)/32          md5

PostgreSQL 서버 재시작: 변경 사항을 적용하려면 PostgreSQL 서버를 재시작해야 합니다.

sudo systemctl restart postgresql

HammerDB로 할 수 있는 부하 테스트

HammerDB를 사용하면 다음과 같은 부하 테스트를 수행할 수 있습니다

  • TPC-C 부하 테스트: 트랜잭션 기반의 부하 테스트로, 실시간 주문 처리 시스템을 시뮬레이션하여 데이터베이스의 응답성과 처리량을 평가합니다.

  • TPC-H 부하 테스트: 대규모 데이터 집합에 대해 복잡한 쿼리를 실행하여 데이터베이스의 분석 성능을 측정합니다.

  • 자체 정의한 스크립트 기반 부하 테스트: SQL 쿼리나 사용자 정의 스크립트를 통해 특정 비즈니스 요구 사항에 맞춘 부하 테스트를 진행할 수 있습니다.

  • 다양한 스케일 테스트: 데이터베이스의 크기와 사용자의 수를 조정하여 성능 변화를 측정할 수 있습니다.

  • 리포트 생성: 테스트 결과를 바탕으로 성능 리포트를 생성하여 데이터베이스 최적화에 활용할 수 있습니다.


TPC-C

TPC-C는 전자상거래 트랜잭션 처리 시스템을 시뮬레이션하는 벤치마크입니다. 이 테스트는 다양한 트랜잭션 유형(주문 생성, 결제, 고객 관리 등)을 포함하여 데이터베이스의 OLTP(Online Transaction Processing) 성능을 평가합니다.

TPC-H

TPC-H는 데이터 분석 및 비즈니스 인텔리전스(BI) 시스템을 평가하는 데 사용되는 벤치마크입니다. 이 테스트는 복잡한 쿼리를 포함하여 대량의 데이터를 처리하는 데이터베이스의 OLAP(Online Analytical Processing) 성능을 측정합니다.

연결

Host: EC2의퍼블릭 IPv4 주소

Test예시(내용 발췌 경로: click)

We run timed driver script test with 2 minutes of ramp up time and 10 minutes of metered test time. We disabled the “Keying and Thinking time”, which is a standard in the official TPC-C testing. By doing so, every virtual user is able to drive a CPU core to its maximum

We created 10 users because we want to drive RDS primary instance consistently between 50% and 70%, consistent with a real world intensive OLTP scenario, assessing the performance impact of the various deployment options available. To eliminate the influence of a cold or warm buffer cache, instances were rebooted after each test run and the tpcc database was restored from a snapshot every time to have the AUTOVACUUM process behaves the same way on all the different test runs.


hammerdb 다운로드 경로

https://www.hammerdb.com/download.html

hammerdb Guid docs 경로

https://www.hammerdb.com/docs/

profile
pglover_12

0개의 댓글