피드로 돌아가기
Dev.toAI/ML
원문 읽기
Zero-Downtime Indexing 및 ThreadPool 분리로 동시성 병목 해결
SynaptoRoute v0.4.0: Re-Architecting for Massive Concurrency & Zero-Downtime Indexing
AI 요약
Context
50,000개 Route 규모에서 P99 Latency <50ms를 달성했으나, 고부하 비동기 상황의 동시 Mutation 발생 시 시스템 불안정성 노출. FaissIndex의 Global Lock으로 인한 요청 차단 및 FastEmbed의 CPU 집약적 연산에 의한 asyncio Event Loop Starvation 현상 발생.
Technical Solution
- ThreadPoolExecutor를 통한 Embedding 엔진 분리로 ONNX 추론 연산과 asyncio 이벤트 루프 간의 결합도 제거
- In-Memory Write-Ahead Log(WAL) 도입을 통해 Index 재구축 중에도 Mutation 버퍼링 및 Sequential Scan으로 Zero-Downtime 구현
- Bounded Connection Pool 및 Thread-local Isolation 적용을 통한 SQLite multithreading Deadlock 원천 차단
- RedisSyncManager에 target_id 페이로드를 도입하여 루프백 이벤트를 제거하고 동기화 오버헤드를 O(N^2)에서 O(N)으로 최적화
실천 포인트
- asyncio 환경에서 무거운 연산 수행 시 ThreadPoolExecutor 분리 여부 검토 - 인덱스 재구축 시 Read/Write 동시성을 보장하기 위한 WAL 또는 Double Buffering 구조 적용 고려 - 분산 노드 간 상태 동기화 시 Broadcast Storm 방지를 위한 Target ID 기반 필터링 구현