본문으로 건너뛰기

12.5 Benchmarking

새 클러스터를 운영에 올리기 전에는 이 환경이 어느 정도 성능을 내는지 재 두는 것이 좋다. CloudNativePG의 cnpg 플러그인은 두 가지 벤치마크 도구를 감싼다. 데이터베이스 성능을 재는 pgbench와, 스토리지 성능을 재는 fio다. 둘 다 플러그인이 Kubernetes Job이나 Deployment를 대신 만들어 클러스터 안에서 돌린다.

pgbenchfio는 반드시 staging·pre-production 환경에서만 실행한다. 운영 환경에서 돌리면 데이터베이스와 함께 있는 다른 워크로드까지 치명적인 영향을 받을 수 있다.
    flowchart TD
  CLI["kubectl cnpg"]
  CLI --> PGB["pgbench 명령"]
  CLI --> FIO["fio 명령"]
  PGB --> JOB["pgbench Job"]
  JOB --> DB["PostgreSQL 성능 측정"]
  FIO --> DEP["fio Deployment"]
  DEP --> STO["스토리지 I/O 측정"]
  

pgbench

pgbench 명령은 기존 클러스터를 대상으로 PostgreSQL 표준 벤치마크 Job을 만들어 실행한다.

kubectl cnpg pgbench \
  -n <namespace> <cluster-name> \
  --job-name <pgbench-job> \
  --db-name <db-name> \
  -- <pgbench options>

-- 뒤의 인자는 그대로 pgbench에 전달된다. 자주 쓰는 플러그인 옵션은 다음과 같다.

  • --job-name — 생성되는 Job 이름
  • --db-name — 대상 데이터베이스 (기본 postgres)
  • --ttl — 지정한 초가 지나면 Job 자동 삭제
  • --node-selector — 라벨로 특정 worker node 지정
  • --dry-run — 실행 없이 매니페스트만 출력

먼저 테스트 데이터를 적재한다. scale factor 1000은 약 1억 row, 대략 13GB 디스크를 쓴다.

kubectl cnpg pgbench \
  --job-name pgbench-init \
  cluster-example \
  -- --initialize --scale 1000

이어서 벤치마크를 돌린다. 아래는 client 1개로 30초간 측정하고, 끝난 뒤 600초가 지나면 Job을 지우는 예다.

kubectl cnpg pgbench \
  --job-name pgbench-run \
  --ttl 600 \
  cluster-example \
  -- --time 30 --client 1 --jobs 1

진행과 결과는 Job 로그로 본다.

kubectl get job/pgbench-run -n <namespace>
kubectl logs job/pgbench-run -n <namespace>

fio

fio 명령은 스토리지 I/O 성능을 잰다. PVC 하나와 fio 설정 ConfigMap, fio를 돌리는 Pod로 구성된 Deployment, 그리고 결과를 웹으로 보여 주는 서버를 함께 만든다.

kubectl cnpg fio <fio-name>

storage class와 PVC 크기를 지정할 수 있다.

kubectl cnpg fio fio-job \
  -n fio \
  --storageClass standard \
  --pvcSize 2Gi

결과는 Pod 포트를 forward해서 브라우저로 확인한다.

kubectl port-forward -n <namespace> deployment/<fio-name> 8000
# http://localhost:8000/ 접속

정리할 때는 --dry-run으로 매니페스트를 뽑아 그대로 삭제에 넘긴다.

kubectl cnpg fio <fio-name> --dry-run | kubectl delete -f -
fio는 기본 8k block size로 측정한다. 이는 PostgreSQL의 기본 페이지 크기와 같아 실제 워크로드 패턴을 근사한다. block size를 바꾸면 IOPS 한계에 걸린 디스크에서 결과가 크게 달라질 수 있으니, 비교할 때는 조건을 맞춘다.

정리

  • cnpg 플러그인은 pgbench(DB 성능)와 fio(스토리지 성능)를 감싼다
  • 두 도구 모두 staging·pre-production 전용 — 운영에서 실행 금지
  • pgbench--initialize로 적재 후 --time·--client로 측정, --ttl로 Job 자동 정리
  • fio는 PVC·ConfigMap·Deployment를 만들고, port-forward로 결과 확인 — 8k block이 기본
  • scale factor 1000 ≈ 1억 row ≈ 13GB — 적재 전에 용량 확인

다음 절에서는 공식 문서의 자주 묻는 질문(FAQ)을 Q/A로 정리한다.