VSMS, 데드락을 넘어 1500 TPS 달성!

by DD
5년 전
조회수 6

DB 데드락 발생으로 인해 초기 성능 테스트에서 TPS 120이라는 처참한 결과를 기록함

상품 정렬을 통해 데드락을 해결하고, DB IO 최소화를 위한 리팩토링을 진행함

MongoDB로 로그 분리 후, 최종적으로 1500 TPS 이상을 달성하며 목표 성능을 초과 달성함

데드락 해결: 상품 정렬의 마법

초기 성능 테스트에서 데드락으로 인해 심각한 병목 현상이 발생했다. 구체적으로, 상품 차감 시 락 획득 순서가 달라 발생하는 문제였다. 따라서, 상품 ID 정렬을 통해 락 획득 순서를 통일하여 데드락을 해결했다. 결과적으로, TPS 120에서 벗어나 성능 개선의 발판을 마련했다.

DB IO 병목 현상: 튜닝의 핵심

데드락 해결 후, DB IO가 성능 병목의 주원인임을 파악했다. 따라서, DB 커넥션을 줄이기 위해 로그 데이터를 MongoDB로 분리했다. 반면, 리팩토링 과정에서 코드 가독성이 저하되는 트레이드오프가 발생했다. 결과적으로, 1500 TPS를 달성하며 목표 성능을 초과했다.

성능 테스트: 반복과 개선의 중요성

성능 테스트를 통해 문제점을 지속적으로 발견하고 개선하는 과정이 중요했다. 구체적으로, DB IO 병목을 해결하기 위해 다양한 실험을 진행했다. 따라서, 리팩토링 전후 성능 비교를 통해 최적의 선택을 할 수 있었다. 결과적으로, 지속적인 개선을 통해 서비스 안정성을 확보했다.

신규 서비스 배포 전에 실험과 개선을 반복한 이야기