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