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. 부하 확인

RDS > 성능개선 도우미

상단 그래프 : 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비교 가능
  • 성능 분석, 호출서비스 등등은 유료 플랜만 가능 ㅜㅜ

CloudWatch > Database Insights

제일 처음에 나오는 쿼리는 더 확실한 부하를 위해 포문 돌렸음

 

  • 상위 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 처리량: 초당 처리한 바이트 수