DB/AWS
[AWS] 모니터링
chantant sous la pluie
2025. 5. 29. 13:35
Performance Insight
- RDS 전용 SQL 성능 시각화 도구
- Top SQL, 대기 이벤트, 실행 횟수, 평균 응답시간 등 자동 집계
- 실시간 조회 가능
실습
1. 더미데이터 넣기 (10만 건)
-- 더미 데이터 10만 건 삽입
INSERT INTO big_table (name, description)
SELECT
md5(random()::text),
repeat('desc-', 50)
FROM generate_series(1, 100000);
2. Full Scan 유도
SELECT *
, repeat(description, 5000)
FROM big_table
WHERE description LIKE '%999%';
대략 8초? 걸린듯
3. 부하 확인
상단 그래프 : CPU, Client: ClientWrite, 대기 등 살짝 올라옴 → 부하 낮게 잡힘 (AAS < 0.01)
- AAS (평균 활성 세션) : Load(부하). 숫자가 높을수록 병목 가능성 ↑
- CPU (녹색) : DB가 CPU 작업 중
- Client: ClientWrite (보라색) : 클라이언트가 데이터를 DB에 보내는 중 → 대기 상태로 잦ㅂ힘
- 최대 vCPU 표시 : 성능 한계선. Load가 이 선을 넘으면 성능 저하 가능성이 높음
* Postgresql 은 실행계획 지원 안 함 (EXPLAIN (ANALYZE, BUFFERS) 로 직접 봐야될듯)
Database Insights
- 최신형 SQL 성능 시각화 도구 (CloudWatch 기반)
- CloudWatch 통합 + 필터 강화
- 여러 DB비교 가능
성능 분석, 호출서비스 등등은 유료 플랜만 가능 ㅜㅜ
제일 처음에 나오는 쿼리는 더 확실한 부하를 위해 포문 돌렸음
- 상위 SQL : 어떤 쿼리가 load를 유발했는지
- 상위 대기 : CPU, I/O, Lock 중 어떤게 병목인지
- 상위 사용자 : 어떤 DB유저가 부하를 일으켰는지
- 상위 호스트 : WAS나 클라이언트 측 문제 파악
- 상위 세션 유형 : 트랜잭션/백그라운드 작업 구분
데이터베이스 원격 분석 : DB내부가 아닌 운영체제와 하드웨어 리소스(CPU, 메모리, I/O 등)의 사용 상태를 CloudWatch 기반으로 실시간 분석
→ 병목 원인이 SQL 문제인지, I/O 병목인지, 메모리 부족인지 DB외부 자원입장에서 파악 가능
- CPU 이용률 : DB 서버의 CPU 사용률
- 보라색 선 (guest.avg) : 94%까지 상승 → cpu 병목
- wait.avg : Lock
- Freeable Memory : 사용가능한 메모리 (잔여 ram)
- 낮으면 메모리 부족
- IO 지연 시간 : 디스크 읽기/쓰기 지연 시간
- EBS IOPS : 초당 디스크 입출력 수
- IO 처리량: 초당 처리한 바이트 수