RDS의 CPU가 갑자기 100%를 차고 세션도 4~500 정도가 차는 이슈가 종종 있었다.
허나 그 원인을 모르고 사용자가 많아져서 그럴것이다라고 판단했었다.
해당 이슈가 일주일에 두세번 발생하기전까지는...
해당 이슈가 너무 잦아지자 이걸 해결하려고 열심히 찾아보았다.
그러던중 RDS 로그를 확인했다.
RDS 로그를 보았을때 sh / admin / na 등으로 1초에 1000번정도 로그인한 로그가 찍혀져 있었다.
화이트리스트로 해결!
※ RDS 로그
- 추가 무차별 공격은 방어에 성공한것으로 확인됨.
※ CPU 모니터링 결과
1.(2024.11.25 ~ 2025.01.05) - 5분단위
- 6개월 간 1일 MAX 값 - (CPU 100 일때 서버 장애 발생 ex. 키오스크 로그인 x / 어드민 로그인 x )
- 빨간선 : 화이트 리스트 적용 (SSH 접근 - 회사 인터넷망만 열게 적용)
- 노란선 : RDS 사이즈 다운
DB CPU에 영향을 주는 차트
※ 비교 (SALES 테이블 카운터 / MAX CPU )
일자 Count MAX CPU (%)
20241224 | 18167 | 80 |
20241225 | 40974 | 100 |
20241226 | 12336 | 16 |
20241227 | 15201 | 28 |
20241228 | 21773 | 15 |
20241229 | 18969 | 13 |
20241230 | 14753 | 39 |
— | 화이트 리스트 | ssh 회사망만 열어 놓음 |
20241231 | 25736 | 33 |
20250101 | 26126 | 12 |
20250102 | 11237 | 37 |
20250103 | 13174 | 22 |
— | DB Size Down | db.m5.24xlarge → db.m5.12xlarge |
20250104 | 19956 | 23 |
20250105 | 15056 | 31 |
20250106 | 8501 | 38 |
※ RDS 가격 비교 (다중 AZ 사용) - RDS 신규 생성기준
- db.m5.24xlarge 1달 사용 추정금액 ( 약 9000만원)
- db.m5.16xlarge 1달 사용 추정금액 ( 약 6000만원)
- db.m5.12xlarge 1달 사용 추정금액 ( 약 4500만원)
- db.m5.8xlarge 1달 사용 추정금액 ( 약 3100만원)
- db.m5.4xlarge 1달 사용 추정금액 ( 약 1600만원)
금액 절감을 위한 다운사이징
1. m5 인스턴스 계열 비교
db.m5.12xlarge의 주요 스펙
- vCPU: 48개
- RAM: 192GiB
m5 계열에서 다운사이징을 고려할 수 있는 옵션:
인스턴스 타입 vCPU RAM 상대적인 비용
db.m5.8xlarge | 32 | 128GiB | 약 33% 절감 |
db.m5.4xlarge | 16 | 64GiB | 약 66% 절감 |
db.m5.2xlarge | 8 | 32GiB | 약 83% 절감 |
db.m5.xlarge | 4 | 16GiB | 약 92% 절감 |
2. 다운사이징 시 고려사항
- 현재 CPU 사용률
- CPU 사용률이 30%라면, 현재 리소스의 약 1/3 정도만 사용 중.
- db.m5.4xlarge 또는 db.m5.2xlarge로 줄이는 것이 적절할 수 있다.
- 메모리 사용량
- RDS는 캐싱에 메모리를 활용하므로, 메모리가 부족하면 디스크 I/O가 증가해 성능에 영향을 줄 수 있기에 확인해야함.
- CloudWatch에서 FreeableMemory 메트릭을 확인하여 메모리 사용량이 여유 있는지 확인.
- 스토리지 및 IOPS
- 인스턴스 크기에 따라 프로비저닝된 IOPS 제한이 달라질 수 있음.
- 현재 사용 중인 디스크 성능이 충분한지 검토 필요.
- 네트워크 트래픽
- 다운사이징 후 네트워크 대역폭이 줄어들 수 있으므로, 트래픽 요구 사항 확인.
3. 단계적 다운사이징 전략
- 한 번에 너무 작은 인스턴스로 변경하면 성능 저하 위험이 있으므로, 점진적으로 다운사이징.
- Step 1: db.m5.8xlarge로 변경 후 CPU와 메모리 사용률 모니터링.
- Step 2: 사용률이 여전히 낮다면 db.m5.4xlarge로 추가 다운사이징.
- 필요 시, 추가로 db.m5.2xlarge까지 시도.
4. 변경 방법
- AWS 콘솔에서 RDS 인스턴스를 선택.
- Modify(수정) 클릭.
- 새로운 인스턴스 클래스 선택 (예: db.m5.4xlarge).
- 유지보수 창(maintenance window) 동안 변경하거나 즉시 적용.
- 변경 후, CloudWatch에서 성능 모니터링.
5. 비용 절감 예상
인스턴스 타입 시간당 비용 (us-east-1, On-Demand 기준)
db.m5.12xlarge | $2.304 |
db.m5.8xlarge | $1.536 |
db.m5.4xlarge | $0.768 |
db.m5.2xlarge | $0.384 |
db.m5.8xlarge로 다운사이진하면 약 33**% 비용 절감 예상**.
db.m5.4xlarge로 다운사이징하면 약 66% 비용 절감 예상.
6. 추가 최적화
- Aurora로 마이그레이션 고려: 워크로드에 따라 Aurora가 비용 대비 더 나은 성능을 제공할 수 있음.
- Reserved Instance 또는 Savings Plan 활용: 장기적으로 특정 인스턴스 사용 계획이 있다면 예약 인스턴스로 비용을 더 절감 가능.
7. 결론
- db.m5.4xlarge로 다운사이징 가능할 것으로 판단됨.
- db.m5.4xlarge로 다운사이징하면 약 66% 비용 절감이 가능할 것.
'개발공부 > AWS' 카테고리의 다른 글
RDS 화이트리스트 설정하기 (0) | 2025.02.13 |
---|---|
EC2 크기에 따른 비용 절감 (0) | 2025.02.13 |
EC2 배포 - Shell Script (0) | 2025.02.13 |
GCP(Google Cloud Platform)란? (0) | 2025.02.13 |
AWS vs GCP 의 장단점과 차이점 (0) | 2025.02.13 |