There are a number of factors that can cause an EC2 instance (or any system) to appear to run slowly.
CPU Usage. The higher the CPU usage the longer to process new threads and processes.
Free Memory. Your system needs free memory to process threads, create new processes, etc. How much free memory do you have?
Free Disk Space. Operating systems tend to thrash when the file systems on system drives run low on free disk space. How much free disk space do you have?
Network Bandwidth. What is the average bytes in / out for your instance?
When I see a slow EC2 instance, I temporarily bump it up an instance size or two. Then I remeasure. If I see a good increase in performance, then I am pretty sure that the instance is overloaded. Next I try to determine which factor of CPU, Memory, etc. is the culprit.
Amazon has CloudWatch which can provide you with monitoring for everything except for free disk space (you can add an agent to your instance for this metric). This will also help me quickly see what is happening with my instances.
In general I find that a web server and MySQL on a T2.nano or T2.micro is not that good unless there is very little network traffic.
If your average CPU utilization is 20%, then a t2.micro would be too small. A t2.small has enough CPU credits so that the CPU utilization can be 20%.
For example, a t2.small instance receives credits continuously at a rate of 12 CPU Credits per hour. This capability provides baseline performance equivalent to 20% of a CPU core. If at any moment the instance does not need the credits it receives, it stores them in its CPU Credit balance for up to 24 hours. If and when your t2.small needs to burst to more than 20% of a core, it draws from its CPU Credit balance to handle this surge seamlessly. Over time, if you find your workload needs more CPU Credits than you have, or your instance does not maintain a positive CPU Credit balance, we recommend either a larger T2 size, such as the t2.medium, or a Fixed Performance Instance type.
Burstable Performance Instances