我们一直在为 Drupal 和 WordPress 等主流 CMS 软件推出标准的 Web 服务器配置,其中服务器和存储位于 EC2/EBS 上,而这些软件包的数据库位于 RDS/MySQL 中。
通常我们投入生产时t2.microCPU 和一个数据库.t2.microDB,这让客户对我们和 AWS 感到满意,因为他们通常可以在第一年使用免费套餐。EC2 上的默认监控工具清楚地显示了我们何时可能超出了网络主机最昂贵的资源,即CPU 利用率。如果阈值接近或超过 10%,那么我们就知道是时候迁移到t2.小实例类型。
我们不太确定如何确定何时需要升级数据库.t2.micro到db.t2.small甚至可能不止如此。这些要求不涉及多可用区或只读副本,只是 CMS 软件在高峰期可能严重依赖数据库的情况,我们需要通过图表或警报来发现这种情况。
这EC2 实例的文档清楚地表明了它们自己的限制是什么,我想知道对于我们的简单情况,是否可以建议对 RDS 实例进行任何此类限制。它们的一般要求Amazon RDS 的最佳实践很有帮助,尽管我没有关注所有的链接,因为我只是试图设置我们可以实施的阈值,这些阈值将以我的非技术客户可以理解和观察到的方式明确要求数据库实例升级。
我承认我不是一名 DBA;根据我的工作性质,我将数据库架构留给了 CMS 软件的设计人员。如果有人能告诉我从哪里开始了解 AWS 平台上的此配置,我当然愿意学习性能评估的基础知识。也许我只是还没有找到合适的官方文档或教程。
或者:我们只需要知道如何根据我们在 CloudWatch 上看到的情况定量测量访问我们的 RDS 实例的延迟是否是由于实例大小太小(或者可能是 MySQL 资源参数设置得太低)造成的。
简单来说,我可以判断 CloudWatch 指标可释放内存接近零,那么我们就需要升级实例。与我们的 EC2 实例一样,也必须有一个最大CPU 利用率我猜想这会远低于 100%,尽管我还没有看到像 EC2 那样的记录。我想实际的最大值应该是数据库连接。最后我希望有人能告诉我如何解释写入 IOPS 和读取 IOPS以及这些是否会对像我们这样的小型配置造成性能限制,或者它们是否仅仅用于计算成本。
ps,我尝试发布此内容AWS 论坛:Amazon Relational Database Service但发布新主题链接目前产生“重定向循环”。 (抱歉,我无法在此处包含更多 URL,但我不被允许。)
[编辑,回复评论]谢谢@Ross,我不知道CPU信用余额也适用于 RDS(我曾在 EC2 上看到过);没有看到第二个屏幕显示另外 7 个指标,并且所有 17 个指标都可以从列表中选择。我仍然想知道根据 RDS 实例类型,除了 CPU 之外,可监控资源(尤其是 I/O 活动)可能会受到哪些限制。
pps,我对问题进行了进一步完善,并发布在 AWS 论坛上(如何使用 CloudWatch 统计数据确定 RDS T2 实例的大小是否合适?)
答案1
在过去的几个月里,我对此有了一些看法,我相信这些值得关注的事情将解决上述所有问题:
1) @Ross 对原始帖子的评论是关键。T2 实例,无论规模如何,无论是 EC2 还是 RDS,都会在 CPU 信用耗尽时停止运行,因为峰值 CPU 需求持续存在。
2) 我们最常见的 CMS Web 服务器故障模式正是由这种情况显示的:当httpd
进程所需的 CPU 百分比超过分配给该实例类型的 CPU 百分比时,CloudWatch 图表就会趋向于零(请参阅下面的文档链接)。
3)T2 实例 CPU 积分耗尽的快速解决方法是关闭实例,升级实例类型,然后重新启动实例,这大约需要 3-4 分钟。不同实例类型的容量最重要的描述在这里:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/t2-instances.html
4) 出于这个原因,AWS 上的任何生产 Web 服务器都必须提前分配一个弹性 IP 地址:如果没有,并且实例进行了重新扩展,则 IP 地址将发生变化,导致 Web 服务器无法访问,而原本只会停机 3-4 分钟。
5)获得更多 CPU 积分的唯一方法是升级机器类型。每个 T2 实例大小可以容纳的积分数量在上面的文档链接中描述:它始终等于该实例类型在 24 小时内所做的 CPU 工作。
6) 在峰值性能需求消退后,机器可以在一段预定的停机时间内(同样,3-4 分钟)恢复到其原始规模。
7) 到目前为止,I/O 活动在任何高峰期都没有导致我们的 Web 服务器性能下降。IOPS 的数量严格由 EBS 卷大小决定。IOPS 的确切含义及其关系如下所述:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-io-characteristics.html
8)Cloud Watch 的各项指标均未可释放内存也不数据库连接对于预测或纠正 Web 服务器密集型环境中的性能问题没有任何用处。