성능 개선 도우미를 자세히 알아 보기에 앞서, 성능 개선 도우미가 DB에 부하를 줄 수 있는지부터 살펴 보려 한다.
성능 개선 도우미는 DB에 얼만큼 부하를 줄까?
우아한 형제들 기술 블로그에 따르면 성능 개선 도우미 모니터링을 하는 경우 DB에 부하를 줄 수 있다. 성능 개선 도우미는 성능 지표를 수집할 때 performance_schema
에 기록되는 지표를 사용하는데 이 때 해당 옵션이 켜져 있어야 한다(ON).
그런데 이 때 성능 개선 도우미를 사용하면 performance_schema
옵션이 약 1.1GB의 메모리를 더 사용한다고 한다. t2 타입에서는 성능 개선 도우미 기능을 활성화 할 수 없는데, 이른 이유 때문일 수 있다.
만약 시스템 자원에 여유가 있고 8~10% 성능 하락을 인식하고 사용한다면 성능 개선 도우미를 이용하는 것이 DB 부하를 낮추는 데 오히려 도움이 될 수 있다.
성능 개선 도우미 알아보기
AAS(Average active session, 평균 활성 세션)
활성 세션
- 활성 세션이란 현재 DB 인스턴스와 연결되어 있는 connection 즉, 인스턴스로부터 쿼리 결과를 전달 받기 위해 대기 중인 connection이다.
- 서버에서는 DB 인스턴스와 connection을 생성해서 쿼리를 날리며, 쿼리 결과를 전달 받았을 경우 connection은 끊어진다.
평균 활성 세션
- 단위 시간 동안의 평균 connection
- DB는 계속해서 connection이 생성되고 끊어지기 때문에 특정 시점의 connection 수를 확인하기는 어렵다. 이에 따라 단위 시간 동안의 평균 connection 수를 측정한다.
대기
차트 우측에는 아래와 같이 유형이 Bar, 기준이 대기가 뜬다.
- 대기는 wait event를 의미한다.
- 즉, DB 인스턴스의 처리를 기다리는 이벤트이다.
- 유형 별로 어떤 event의 비중이 높았는 지 확인할 수 있다.
상위 SQL
- 선택된 기간 동안에 발생한 쿼리문들의 내역, 비중을 빈도 순으로 내림차순 하여 볼 수 있다.
- 만약 초록색으로 된 CPU wait의 비중이 가장 크다면 쿼리 실행이 오래 걸렸다는 뜻이다.
- 우리 회사에서 쓰고 있는 인스턴스는 r5.large인데 2개의 vCPU를 사용하고 있으므로 2개의 활성 세션을 동시에 처리할 수 있다.
- 만약 활성 세션이 2개가 넘어가면 큐에 쌓여 대기해야 한다.
- 여기에서 RDS 인스턴스 스펙을 비교해 볼 수 있다.
- 트래픽이 증가함에 따라 connection이 증가해 활성 세션의 수가 증가한다.
활성 세션의 수를 낮추기 위한 방법은?
- connection의 수를 낮춘다.
- 쿼리 개수 자체를 줄인다.
- 각 connection의 처리 시간을 줄인다.
- 쿼리를 최적화 한다.
- 쿼리에 적절한 index를 건다.
- 쿼리 실행 시간을 단축 시킨다.
- 캐시를 이용한다.
- DB에 부하가 가지 않도록 한다.