在搜索和阅读尽可能多的帖子、评论和讨论后,我发现我没有找到一个针对我的问题的特定内容。
我在同一个交付区域 us-west-2(c) 中有多个 AWS EC2 部署和一个 RDS
我正在以我很快预期的一小部分测试实例的负载。我关心的问题是推送更新时的性能。我们将频繁地一次获取 1,000 条记录的更新,并将获取和比较我们的数据,并酌情更新我们的数据。因此,每个条目一次读取和一次写入。一小时内收到 100,000 条更新并不罕见。
目前,我在 AWS t2.medium 类 RDS 上有一个 MySQL 数据库,以 22% 的 CPU 和小于 1GB 的内存运行 5 个更新进程。
即使使用这些低数字,搜索 106.3K 记录的数据库的读取时间也需要 2 到 3 整秒,而写入时间则是另外 2 秒。
我需要一些关于如何改善这些读/写时间的想法。
附加信息:我也有一个副本实例正在运行。CMS 驱动的站点(100 个并且每天都在增长)连接到副本实例以获取其内容。
谢谢!
我将把上面的评论变成答案。
T2 实例仅获得CPU 的一小部分- t2.micro 为 10%,t2.medium 为 40%。您会获得累积的 CPU 积分,但是一旦使用它们,您就会受到 CPU 的限制。由于您必须共享物理机器资源,因此您还会获得较低的网络和 IO 性能。
我怀疑正在发生的事情是您的测试已用完 CPU 积分,因此您受到了限制。您可以在 CloudWatch 中监控 CPU 积分,这将告诉您我的猜测是否正确。
不管我说得对不对,t2 实例都不适合需要不断进行工作的系统。C4 或其他一般实例可能是您最好的选择。您可以在 CloudWatch 中监控数据库内存和 CPU 使用情况,以帮助确定您需要的数据库实例大小。
注意磁盘瓶颈:磁盘 IOPS。如果未配置,RDS 将限制 IO 请求。SSD 有 3iops/GB。因此,如果您为 SSD 分配了 100GB,则最多可以达到 3x100 = 300 iops 块。
如果您为预置的 SSD 付费,则可以预置更多的 iops。
而对于标准(磁)存储,每百万次 iops 额外收费计数,并且突发为 40-200 iops。
请检查您的 RDS io 活动日志以确定更好的磁盘 io 策略。更多信息参考:https ://stackoverflow.com/questions/18777070/aws-rds-provisioned-iops-really-worth-it
我最终创建了一个 c4.xlarge EC2 并将它作为我的 MariaDB 10 服务器运行。由于目前的大量流量以及新的营销活动带来的大幅增长,如果不每月花费数百美元,我就无法依赖 RDS。我发现很多关于 AWS RDS 的投诉与我的问题类似。
现在系统能够同时维护两个更新工作者,而访问者能够在不降低性能的情况下获得动态内容。
谢谢大家的想法和评论!