Warakorn - Fotolia
Numerous issues can affect AWS storage performance, even when enterprises carefully plan around their workload demands. Taking these four specific steps can help reduce the chance of poor application performance in the public cloud.
1. Initialize restored AWS storage volumes, such as an Amazon Elastic Block Store (EBS), from a snapshot. This involves accessing the blocks from the snapshot and writing them to the storage volume before accessing the restored block.
The initialization process causes considerable latency in access time for each restored block -- but only on the first access after restoration, which is sometimes called a "first touch" penalty. Latency-sensitive cloud applications will read all of the blocks in a volume before using the volume in production in an attempt to initialize the restored volume.
2. Because they require a great deal of I/O to complete a copy in a short period of time, snapshots and replica activities slow AWS storage performance. Frequent backups -- especially when data changes extensively between snapshots or replicas -- might result in periods of noticeable performance degradation. This is usually most pronounced with HDD instances, such as st1 and sc1 Amazon EBS volumes. Selecting SSD volume instances like gp2 or provisioning IOPS on an io1 instance might alleviate the issue.
3. Look at the storage volume's queue length, and watch for a modest queue depth. This allows storage controllers to organize and optimize storage device access. If there is no queue depth, queuing techniques won't work and AWS storage performance may actually be lower than if there were some I/O requests in the queue. A queue depth of at least four is recommended when using 1 MB of sequential I/O. A read-heavy AWS workload could benefit from increasing the HDD read-ahead setting to 1 MB to cache more disk content.
4. Storage instances support RAID 0 (striping) for spreading data across multiple instances and increasing the effective storage throughput. Joining multiple low-cost HDD instances can be a cost-effective alternative to using SDD volumes and can improve AWS storage performance. This method can accommodate an AWS workload with high storage demands.
Cloud storage and application performance are not guaranteed and can fluctuate from a myriad of common oversights. Invest the time and effort to evaluate application performance, gather metrics over time, identify performance bottlenecks in the application or the cloud configuration and make the necessary changes to mitigate the impairment.
Provisioned IOPS help boost database performance
Select the right Elastic Block Store volumes
Evaluate AWS storage options
Dig Deeper on AWS database management
Related Q&A from Stephen J. Bigelow
Regression tests and UAT ensure software quality and both require a sizeable investment. Learn when and how to perform each one, and some tips to get... Continue Reading
Learn the meaning of functional vs. nonfunctional requirements in software engineering, with helpful examples. Then, see how to write both and build ... Continue Reading
Just because software passes functional tests doesn't mean it works. Dig into stress, load, endurance and other performance tests, and their ... Continue Reading