피드로 돌아가기
Dev.toBackend
원문 읽기
Java 21 Virtual Threads 도입 시 Pinning 리스크 관리와 AI 워크로드 최적화
Java 21 Virtual Threads + AI Workloads: What the Benchmarks Don't Show You (And What 16 Years Does)
AI 요약
Context
OS thread-per-request 모델의 리소스 오버헤드와 고동시성 환경의 처리량 한계 발생. AI 추론 API 호출과 같은 I/O Bound 작업 증가로 인한 효율적인 스레드 관리 체계 필요.
Technical Solution
- JVM managed continuations 기반의 Virtual Threads 도입을 통한 Carrier Thread 효율 극대화
- Blocking I/O 발생 시 Virtual Thread를 Carrier Thread에서 Unmount 하여 리소스 점유 해제
- synchronized monitor 점유 상태의 Blocking 발생 시 Carrier Thread에 고정되는 Pinning 현상 식별
- AI inference layer에는 Loom-aware한 HttpClient를 적용하여 Non-blocking I/O 구현
- Legacy JDBC 드라이버의 synchronized 사용으로 인한 Pinning 방지를 위해 Bounded Executor 분리 설계
- -Djdk.tracePinnedThreads=full 플래그를 통한 런타임 Pinning 지점 정밀 진단
실천 포인트
1. -Djdk.tracePinnedThreads=full 옵션으로 Staging 환경 내 Pinning 발생 여부 전수 조사
2. AI API 호출부에는 Java 21 HttpClient를 적용하여 Virtual Thread 최적화 달성
3. Legacy JDBC 사용 시 HikariCP 풀 크기를 DB 연결 제한 수치에 맞춰 튜닝하거나 R2DBC 검토
4. I/O 집약적 AI 워크로드와 DB 액세스 레이어의 실행 컨텍스트를 물리적으로 분리