본문으로 건너뛰기

성능 튜닝

GenD 플랫폼의 성능 최적화 및 튜닝 가이드입니다.

개요

GenD의 성능 병목은 주로 Trino 쿼리 실행, API 응답 시간, 데이터베이스 커넥션에서 발생합니다. Grafana 대시보드와 Prometheus 메트릭을 활용하여 병목을 식별합니다.

Trino 쿼리 성능

메모리 설정

설정개발프로덕션 권장
query.max-memory2GB8GB+
query.max-memory-per-node1GB4GB+
coordinator.jvm.maxHeapSize3G8G+
worker.jvm.maxHeapSize3G8G+

워커 스케일링

쿼리 처리량이 부족하면 워커를 추가합니다.

# 워커 수 증가
helm upgrade trino trino/trino -n gend --set worker.replicas=3

리소스 그룹 튜닝

역할별 동시 쿼리 수와 메모리 할당을 조정합니다 (resource-groups.json).

GenD API 성능

응답 시간 모니터링

Prometheus 메트릭으로 API 레이턴시를 모니터링합니다:

# P95 응답 시간
histogram_quantile(0.95, rate(gend_http_request_duration_seconds_bucket[5m]))

# 초당 요청 수
rate(gend_http_requests_total[5m])

HPA 기반 자동 스케일링

CPU 70%/메모리 80% 초과 시 자동 스케일 아웃됩니다.

# HPA 상태 확인
kubectl get hpa gend-api-hpa -n gend

# 현재 메트릭 확인
kubectl describe hpa gend-api-hpa -n gend

쿼리 캐시

쿼리 캐시를 활성화하면 동일 쿼리의 반복 실행을 최적화합니다.

GEND_QUERY_CACHE_ENABLED=true
GEND_QUERY_CACHE_THRESHOLD=0.95 # 유사도 임계값

스키마 동기화 주기

스키마 자동 동기화가 부하를 유발하면 주기를 늘립니다.

GEND_SCHEMA_SYNC_INTERVAL_SECONDS=600 # 기본 300초 -> 600초

PostgreSQL 튜닝

  • 커넥션 풀: SQLAlchemy async pool 크기 조정
  • 인덱스: 자주 사용하는 컬럼에 인덱스 확인
  • VACUUM: 정기적 VACUUM ANALYZE 실행

네트워크 최적화

  • Pod 코로케이션: API와 Trino를 동일 노드에 배치 (nodeAffinity)
  • 서비스 메시: 대규모 환경에서 서비스 메시 도입 검토

관련 문서