나는 3년 동안 이벤트에 대해 틀렸다—Async Runtime이 실제로 치르고 있던 대가를 알기 전까지
I Was Wrong About Events for Three Years—Until I Learned What Async Runtime Was Really Costing
TL;DR AI
1분핵심 요약
초당 200만 건 이상의 이벤트를 처리하던 Rust 게임 백엔드가 GC 튜닝과 코드 수정에도 불구하고 꼬리 지연, 메모리 증가, 장애를 겪었습니다.
프로파일링 결과, 병목은 애플리케이션 로직이 아니라 syscall이 많은 큐 처리에서 async 런타임이 막히는 데 있었습니다.
팀은 tokio에서 smol로 전환하고, 락프리 bounded 큐를 도입했으며, 네트워크 쓰기를 분리했습니다.
그 결과 할당이 줄고 메모리가 안정화됐으며, 고부하에서도 처리 예측 가능성이 개선됐습니다.
이 사례는 고처리량 시스템에서 async 런타임 설계가 GC나 애플리케이션 코드만큼 지연과 메모리를 좌우할 수 있음을 보여줍니다.
