Technical Guide

Oversized RDS Instances

How to identify oversized RDS instances? RDS instances using under 20% CPU consistently over 14 days can be downsized to save 40-60% on database costs without performance impact.

2 min read
High impact optimization

Why This Matters

RDS instances have premium managed service pricing, making oversizing especially expensive. Unlike EC2, RDS includes backup, patching, and monitoring costs, so rightsizing provides higher impact savings. Many databases are conservatively sized during migrations and never optimized.

Common causes:

  • Conservative sizing during database migrations
  • Over-provisioning for peak loads that rarely occur
  • Legacy databases that haven't been optimized for current workloads
  • Development databases using production-sized instances

How to Identify Oversized RDS Instances

AWS Saver flags RDS instances as oversized when they meet these criteria:

  1. CPU utilization under 20% averaged over 14 days
  2. Monthly cost above $50 (meaningful savings threshold for RDS)
  3. Instance status 'available' (running and accessible)
  4. Aged over 7 days (avoids flagging new deployments)

How to Fix Oversized RDS Instances

Step 1: List all available RDS instances

aws rds describe-db-instances \
  --query 'DBInstances[?DBInstanceStatus==`available`].[DBInstanceIdentifier,DBInstanceClass,Engine,InstanceCreateTime]'

Step 2: Get CPU utilization over 14 days

aws cloudwatch get-metric-statistics \
  --namespace AWS/RDS \
  --metric-name CPUUtilization \
  --dimensions Name=DBInstanceIdentifier,Value=your-db-instance \
  --statistics Average \
  --start-time $(date -u -d '14 days ago' +%Y-%m-%dT%H:%M:%SZ) \
  --end-time $(date -u +%Y-%m-%dT%H:%M:%SZ) \
  --period 3600

Step 3: Create snapshot before modification

aws rds create-db-snapshot \
  --db-instance-identifier your-db-instance \
  --db-snapshot-identifier pre-resize-snapshot-$(date +%Y%m%d)

Step 4: Modify instance class (requires downtime)

aws rds modify-db-instance \
  --db-instance-identifier your-db-instance \
  --db-instance-class db.t3.medium \
  --apply-immediately

Prevention Tips

Start with smaller instances: Begin with t3/t4g instances and scale up based on actual performance needs, not estimates.

Use Performance Insights: Enable AWS Performance Insights to monitor database workload patterns and resource utilization.

Monitor consistently: Set up CloudWatch alarms for CPU utilization above 80% to catch undersized instances quickly.

Regular reviews: Schedule quarterly RDS instance size reviews as part of cost optimization and performance tuning.

Automation Available

Skip the manual work. AWS Saver automatically analyzes RDS instances using the same 20% CPU and 14-day criteria.

CPU utilization monitoring - Tracks average CPU over 14-day periods for statistical accuracy

Cost-based filtering - Only flags instances above $50/month for meaningful savings

Conservative thresholds - Focuses on instances aged over 7 days to avoid new deployments

Instance class recommendations - Suggests optimal sizing based on actual usage patterns

Ready to Optimize Your AWS Costs?

Skip the manual work. Get automated RDS optimization across your entire AWS infrastructure.

60-second setup • No credit card required • Immediate results

Automation Available

Skip the manual work. AWS Saver automatically detects and prioritizes this issue across your entire AWS infrastructure.

60-second setup • No credit card required

Manual vs Automated

Manual Process

  • • Run commands across all regions
  • • Set up monitoring and alerts
  • • Repeat regularly for new issues
  • • Scale across multiple accounts

AWS Saver Automation

  • • Continuous multi-region scanning
  • • Automatic cost impact analysis
  • • Real-time alerts and notifications
  • • Cross-account visibility