EC2 T2 instances are based on CPU Credit system.
If your T2 instance becomes extremely slow, there are good chances that you run out of CPU Credits. You can look at the table here about it.
How it works
Let’s take an T2.Micro for instance. If your cpu stay below 10%, you gain 6 cpu credits every hour, for a maximum of 144 credits. That means, you’re full of cpu credits after 24 hours.
Each credit gives you the right to run your cpu at 100% for 1 minute. That means, once per 24 hours, you can use your cpu at 100% for 144 minutes (1 credit = 1 vcpu (core) running at 100% for 1 hour), that 2 and a half your.
If your cpu runs at 50%, your credits are lowering at half speed.
Look at this graph. I ran a cpu-intensive process for 15 minutes, and you can see in the CloudWatch console, that when the cpu is at top, credits balance are gling down slowly.
What you can do
1. First, configure CloudWatch Alerts to get action before it happen
- Create these 2 alarms
- Know when your cpu is running high, before you lose all your cpu credits
- Know when you’re running our of cpu credits.
To do that, follow the instructions on that article How to create CloudWatch alerts
2. If you don’t have credits left and needs to bring back your performance
Turn off + on your ec2 instance (not reboot, completely turn off and restart it from EC2 console). For a T2.Micro, when an instance starts you get 30 credits immediately.
If you need more power, you can turn off your machine, edit its instance type, e.g. choose a t2.medium or large instead of a t2.micro, turn it on, let your huge procedure complete, then turn it off again and get back to t2.micro.
From your EC2 Console, select your instance, and in the menu “Action” / “instance Settings” / “Chance Instance Types”