Go로 PostgreSQL 프록시 만들기 (38) - pprof 기반 최적화와 투명 프록시의 경계
pprof CPU/alloc 프로파일링으로 병목을 찾고, atomic.Pointer·ReadMessageReuse·wire buffer 재사용을 적용한다. 그리고 응답 batching이 왜 '투명한 프록시'의 원칙을 깨는지 분석한다.
pprof CPU/alloc 프로파일링으로 병목을 찾고, atomic.Pointer·ReadMessageReuse·wire buffer 재사용을 적용한다. 그리고 응답 batching이 왜 '투명한 프록시'의 원칙을 깨는지 분석한다.
세션 상태 추적으로 불필요한 DISCARD ALL을 건너뛰고, RouteWithTxState로 lock 횟수를 줄이고, 벤치마크 방법론을 개선한다.
코드 PR마다 앱+DB를 함께 검증하는 Preview Environment 운영이 왜 2026년 실무 표준으로 올라오는지, 도입 임계치와 운영 기준을 정리합니다.
Transaction Pooling 환경에서 Prepared Statement를 사용할 수 없는 PgBouncer의 한계를 극복하기 위해, Parse/Bind 메시지를 인터셉트하여 Simple Query로 합성하는 Multiplexing 기능을 구현한다.
pgmux에서 발견된 두 가지 CRITICAL 버그, COPY 프로토콜 교착과 Audit Logger의 무한 Map 메모리 누수를 분석하고 수정한다.
pgmux에서 발견된 두 가지 CRITICAL 버그 — 에러 시 오염된 커넥션이 풀에 반납되는 Protocol Desync와, 단일 panic이 전체 서버를 크래시시키는 Global Panic Vulnerability — 를 분석하고 수정한다.
pgmux에서 발견된 두 가지 CRITICAL 버그 — HTTP 클라이언트 끊김을 무시해 고루틴과 DB 커넥션이 영원히 블로킹되는 좀비 누수와, 핫-리로드 후 Admin/Data API가 닫힌 풀을 바라보는 Dangling Pointer — 를 분석하고 수정한다.
2,259줄짜리 server.go를 역할별 9개 파일로 분리한 리팩토링 과정 — 왜 쪼개야 했는지, 어떤 기준으로 경계를 나눴는지, Go 패키지 내 파일 분리 전략을 정리한다.
QA에서 발견된 3가지 버그 — CancelRequest 무시, Graceful Shutdown 무한 대기, Balancer 데이터 레이스 — 의 원인 분석과 수정 과정을 정리한다.
QA에서 발견된 5가지 버그 — Data API 인증 stale, 캐시 전파 누락, ConfigMap symlink 미감지, Reload 주석 불일치, 테스트 race — 의 원인 분석과 수정 과정을 정리한다.