728x90
최근 성능적으로 병목이 많이 생기는 부분에 대해서 원인과 해결 방안을 찾기 위해서 성능 테스트를 수행했다. 성능 테스트는 목록 조회 API로 MSA 구조로 된 서버 환경 특성 때문에 꽤 많은 I/O 작업이 동반되는 작업이었는데 헷갈렸던 부분이 중간에 데이터 조합 과정에서 Event loop delay가 발생하는 것이 아닌지 의심이 되는 상황이었다. 결론적으로 말하면 I/O 작업이 문제였고, Event loop delay가 의심되던 곳은 트래픽이 몰렸을 때 기준으로 I/O 통신 구간에 비해서 1/1000ms도 안 됐다.
이 글에선 그중 흥미로웠던 부분으로 Node.js 버전을 18.19.0에서 21.7.2로 수정하는 것만으로 400ms에서 60ms로 Event loop delay가 약 7배가 개선되었다. JITless로 동일하게 수행한 결과 다시 event loop delay가 길어지는 것을 확인했을 때 확실히 JIT을 통한 성능 개선이 느껴졌다.
무튼 병목이 되는 I/O 작업을 피하기 위해서 로컬 캐시를 도입했고, 결과는 1000vu 기준으로 최악으로 15s 이상 소요되던 문제가 56ms로 개선됐다. 그리고 orm에서 해당 데이터를 캐싱하는 바람에 메모리가 1gb까지 치던걸 100~200mb로 유지되도록 개선됐다.
'메모' 카테고리의 다른 글
Vampire Pizza Ninja 구성하기 (0) | 2024.08.25 |
---|---|
[8월 디버깅] 가짜 Nest.js 개발자 (0) | 2024.08.17 |
[8월의 디버깅] 테스트 코드에서의 MikroORM 영속성 (0) | 2024.08.07 |
NGINX reverse proxy (1) | 2024.05.19 |
틴타임즈 : 뉴스 10초 요약 회고 (0) | 2023.12.29 |