39장. Event Loop와 Pool을 함께 측정한다
평균 latency가 낮아도 긴 sync JSON, crypto, regex, logging이 event loop를 막으면 모든 요청이 멈춘다. event-loop delay, CPU profile, heap allocation, GC, active handle을 HTTP p95와 함께 본다. CPU 작업은 worker thread 또는 별 service 후보지만 serialization 비용과 운영 복잡도를 측정한다.
DB pool 크기는 DB max connection에서 관리 여유를 빼고 API·worker 최대 pod 수로 나눈다. HPA가 scale-out할 때 총 connection과 Redis client가 폭증하지 않게 한다. queue concurrency도 외부 provider rate와 DB write capacity를 넘지 않는다. timeout 뒤 promise가 실제 작업을 계속하는지 취소 semantics를 확인한다.
부하 fixture는 큰 tenant, 동시 배정, 느린 지도, WebSocket reconnect를 섞는다. 한 번에 한 변수만 바꾸고 throughput, p95/p99, error, event-loop lag, pool wait, queue oldest, 비용을 비교한다. 빠르지만 중복 배정이 생기는 설정은 실패다.