[AWS] RDS | 활성 메모리 사용량 분석 모니터링
AWS에서 발생하는 대부분의 비용은 EC2, RDS, 그리고 접속량이 많을 경우 네트워크 전송 비용입니다.
이중에서 EC2같은 경우 서버에 접속하여 메모리 사용량을 확인하여 EC2 Type을 변경할 수 있는 자유도가 있지만,
RDS 같은 경우 실제 DB클라이언트로 접속하여 데이터베이스 메모리 사용량만을 확인하여 실제 OS영역의 메모리를 확인하는 방법을 공유합니다.
Cloudwatch에서는 RDS 메모리 메트릭은 "FreeableMemory" 만 확인이 가능합니다.
RDS에서 사용중인 메모리가 아닌, 남아있는 여유 메모리양을 보여주므로, 임계치를 역으로 계산해서 모니터링을 해야 합니다.
Cloudwatch에서 보여지는 "FreeableMemory"는 RDS를 호스팅하는 하이퍼바이저에서 이 RDS머신이 사용하고 남은 메모리를 나타냅니다.
그러면 RDS(데이터베이스)를 동작시키는 OS가 있을 것인데, 이 OS에 대한 모니터링 메트릭을 확인하기 위해서는 확장 모니터링 활성화가 필요합니다.
RDS 확장 모니터링 사용
RDS 수정(Edit)를 클릭하고 "모니터링" 항목의 "확장 모니터링 사용"을 체크 후 확인을 클릭하면 활성화가 됩니다.
확장 모니터링을 사용하게 되면 Cloudwatch 로그 그룹에 "RDSOSMetrics"에 표기되며, 아래 사진과 같이 스트림이 나타납니다. 내가 확장 모니터링 사용한 RDS이름은 RDS의 리소스 ID값이며, 이는 RDS 구성 항목에서 확인할 수 있습니다.
(-secondary가 표기된 것은 Multi-AZ RDS입니다.)
이제 내 RDS로 다시 돌아와서 모니터링 항목에서 "확장 모니터링"을 선택하면 OS메트릭 즉, 전체 메모리, 활성 메모리, 여유 메모리, 버퍼, 캐시 등을 확인할 수 있습니다.
* 메모리 확인 시 필요한 정보들
Memory
Active (KB) 9511816 (9.07GB)
Free (KB) 1239424 (1.18GB)
Buffers (KB) 438508 (0.41GB)
Cached (KB) 7995496 (7.62GB)
Dirty (KB) 500
Inactive (KB) 3466768 (3.30GB)
Slab (KB) 858836 (0.81GB)
Mapped (KB) 171776 (0.016GB)
Writeback (KB) 0
Total (KB) 32474732 (30.9GB)
Huge Pages Free 1
Huge Pages Size (KB) 2048
Huge Pages Reserved 1
Huge Pages Surplus 0
Huge Pages Total 8194
Page Tables 281404
또한 "OS프로세스 목록"을 확인하여 특정 프로세스가 메모리를 얼마나 사용하는지 점유하는지 확인도 가능합니다.
RDS를 운영하면서 오라클 클라이언트에서 SGA, PGA만 확인했을 때, 메모리 사용량은 21GB 정도이나, Cloudwatch로 Freeablememory 확인 시 28GB를 사용중이어서 나머지 7GB를 찾던 도중 알게 되어 포스팅합니다.
이제 저 로그 스트림을 통해 알람을 보내는 것도 테스트를 해봐야 겠습니다.
- 끝 -