- 테스트 환경: nGrinder
- 사용자 198명
- 1초에 조회 1개씩 요청
- 테스트 시간: 5분
- 테스트 결과:
- 총 실행 횟수: 3,600번
- 성공: 3,598번
- 실패: 2건
- 평균 테스트 시간: 14,133.28ms (매우 비효율적)
- TPS 그래프의 편차가 심함
- 문제 분석:
- DB와의 통신에서 지연이 발생할 가능성이 높음
- JPA를 사용하면서 최적화가 덜 되었을 가능성이 있음
- 진단 방법:
- p6spy를 활용하여 SQL 로그 분석
- COUNT 쿼리에서 700ms가 소요되는 문제 발견
- JPA의 페이지네이션 과정에서 발생하는 비효율적인 쿼리 확인
- 아래 사진 : 타임스탬프 | sql 실행시간 | 실행된 sql작업 | 사용된 DB 커넥션 ID|DB 연결 정보
- 개선 조치:
- JPA 페이지네이션을 QueryDSL로 변경하여 최적화 진행
- 테스트 환경 (동일한 조건으로 진행):
- 테스트 시간: 5분
- 테스트 결과:
- 총 실행 횟수: 42,024번
- 성공: 36,613번
- 실패: 5,411건
- 평균 테스트 시간: 246.18ms
- 개선 점:
- 실행 횟수가 증가하고 성공 횟수도 증가
- 하지만 평균 테스트 시간이 여전히 높음
- 개선 조치:
- 검색 기능을 MySQL에서 엘라스틱 서치로 변경
- 테스트 환경 (동일한 조건으로 진행):
- 테스트 시간: 5분
- 테스트 결과:
- 총 실행 횟수: 57,058번
- 성공: 40,912번
- 실패: 16,146건
- 평균 테스트 시간: 15.39ms
- 분석:
- 에러가 크게 증가했지만, TPS 그래프가 일정 시간마다 0으로 떨어지는 현상이 있었음
- 엘라스틱 서치 자체의 문제라기보다는 다른 병목이 원인일 가능성이 있음
- 개선 점:
- 평균 테스트 시간이 15.39ms로 크게 감소하여 성능이 대폭 개선됨
'트러블슈팅&기술선택' 카테고리의 다른 글
Elasticsearch 클러스터 구성 및 운영 전략 (0) | 2025.03.20 |
---|---|
Elasticsearch의 클러스터링 적용 이유 (0) | 2025.03.19 |
ELK에는 한국시간은 존재하지 않았다 (0) | 2025.03.19 |
Elasticsearch 샤드 관리와 확장 (0) | 2025.03.19 |
Elasticsearch 데이터 접근 방법 (0) | 2025.03.19 |