我想知道在什么阶段需要将 RDS MySQL 服务器的图像增加到更大的 CPU/RAM 实例。
CPU 利用率图表接近 0。平均可用内存约为 150MB。平均交换使用量为 420MB。
读取延迟为 0-20ms/op,随机上升。平均写入延迟平均为 5ms/op,但最高可达 10-20ms/op。
这里有我应该遵循的一些通用规则吗?
谢谢!
答案1
没有共同的规则
性能规则需要由业务和技术目标来设定 - 而不是任意的。
您正在尝试解决或预防什么性能问题?
指标并不等同于绩效,而且通常与业务甚至技术目标关系不大。
通常我会关注表现的两个方面。
- 我需要监控哪些指标才能满足绩效目标?
- 我希望维持多少资源开销以确保满足这些性能目标。
在没有其他数据的情况下,单纯关注数据库资源指标可能没什么用。这些指标需要上下文 - 否则就只是过早优化。
如果您了解利用率,那么这些指标对于容量规划很有用。
因此也许更重要的问题是:
- 在峰值使用水平下,我的应用程序的性能是否在可接受的限度内?
- 在高峰使用情况下,我的资源利用率是多少?
- 随着预期的增长,我的资源利用率将会是多少?
我发现人们经常关注我所说的 ping、电源和管道(CPU/磁盘/RAM)。这些很少是需要关注的重要事项。
获取数据并针对上述问题设定目标将帮助您根据技术和业务依据做出可扩展性决策。
答案2
从我对 RDS 实例的观察来看,FreeableMemory 相当低,而 SwapUsage 相对较高。看来您的工作负载是内存密集型的,至少增加内存可以改善这种情况。
为了获得更一致的延迟,如果您已经分配了至少 300GB 的存储空间,则 Provisioned IOPs 是最佳选择:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.html