프로젝트의 성능 테스트를 진행하며 검색 성능을 최적화한 기록을 정리한 글이다.
이 글에선 테스트에 사용된 인프라와 테스트 환경, 시나리오 등에 대해 설명한다.
성능 테스트를 하기 위한 인프라 구축 과정은 다음 시리즈에 정리되어 있다.
https://velog.io/@jhkim31/series/테스트-인프라-구축
위의 시리즈에도 나와있지만 하나의 호스트에 KVM 으로 여러개의 VM을 띄우고 docker-swarm을 구성했다.
우선 호스트와 각 VM에 대한 성능이다.
CPU
: i5-10400 (6Core, 12Threads)RAM
: 32GBDISK
: 1.5TB (500GB M.2, 1TB M.2)Master
: 1개 (docker swarm master)Worker
: 3개 (docker swarm worker)App Worker (Java Application 수행 노드)
: 2개DB Worker (MySQL, Redis 실행 노드)
: 1개CPU
: 2RAM
: 4GBDISK
: 50GBNETWORK
: Docker Network그리고 이 모든 모니터링은 Grafana 에서 이루어진다.
다음은 서버 인스턴스 현황이다.
MySQL
: 1개 (8.0.23
, master)Redis
: 1개 (7.2.5
, master)JVM
: 1개 (jshop-0.0.7-beta
)
nGrinder/controller
: 1개 (3.5.9-p1
)nGrinder/agent
: 3개 (3.5.9-p1
)아이폰 15
, 아반떼 CN7
아이폰 15, 빨간색, 128GB, 100만원
, 아반떼 CN7, 화이트, 인스퍼레이션
1000ms
10 RPS
0.05
1시간동안 진행되어야할 테스트가 타임아웃으로 인해 조기 종료 되었다.
조회 성능은
3600ms
0.4 RPS
0.19
정도가 나온것을 확인할 수 있다.
테스트 결과 생각보다 너무 낮은 성능이 나왔다.
다음 글부터 이 원인을 분석해보고 해결책을 찾아 적용해 원하는 목표치까지 달성하는 과정을 기록해보려 한다.