【问题标题】:AWS site down issue because cpu utilization reach 100%AWS 站点停机问题,因为 cpu 利用率达到 100%
【发布时间】:2017-03-17 21:41:56
【问题描述】:

我正在使用实例类型为 m3.medium 的 Amazon EC2 实例和 Amazon RDS 数据库实例。

在我的工作时间内,由于 CPU 利用率达到 100%,网站出现故障,而在夜间(非工作时间),CPU 利用率为 60%。

所以请给我这个网站关闭问题的正确解决方案。我不确定为什么会遇到这个问题。

一旦我为每分钟设置了一个 cron 作业,但由于速度慢的问题我被删除了,但我仍然有网站停机问题。

当我尝试使用“top”命令时,我在下面显示了 cpu 使用的图像,其中 httpd 命令消耗了更多的 cpu 使用,因此任何有关设置的建议以减少使用 httpd 命令的 cpu 使用 没有任何用户使用以下两张图片的网站: http://screencast.com/t/1jV98WqhCLvV http://screencast.com/t/PbXF5EYI 网站同时访问后 5 个用户 http://screencast.com/t/QZgZsiNgdCUl

【问题讨论】:

  • 细节太少。由于此 RDS 实例正在为网站提供服务,因此您必须检查网站日志文件以找出哪个程序触发了 RDS CPU 使用率高。

标签: amazon-web-services amazon-ec2 amazon-rds


【解决方案1】:

如果您的 CPU 利用率达到 100%,您有两种选择。

  1. 将您的 EC2 实例类型增加到大。
  2. 使用 AutoScaling 再启动一个相同实例类型的 EC2 实例。

看起来您需要一些计划的操作,因为您不需要在非工作时间达到 100% 的 CPU 利用率。

最好的选择是使用 AWS AutoScaling 和计划操作http://docs.aws.amazon.com/autoscaling/latest/userguide/schedule_time.html

AWS AutoScaling 可以根据您的 CPU 利用率(或网络负载、磁盘读/写等其他指标)启动新的 EC2 实例。这样您就可以始终保持您的网站活跃。

使用 AutoScaling 计划操作,您可以指定指标,以便您在非工作时间停止自动缩放的实例,并根据 CPU 利用率(或其他指标)在工作时间自动缩放实例。

如果您在某个时间点不需要服务器,您甚至可以停止它们。

如果您不熟悉 AWS AutoScaling,您可以按照非常精确和简单的文档进行操作。 http://docs.aws.amazon.com/autoscaling/latest/userguide/GettingStartedTutorial.html

【讨论】:

  • 同意。当然,第三种选择是调查系统中哪些进程正在消耗 CPU。使用标准方法(例如查看进程、内存、磁盘访问)来确定系统中的瓶颈。
  • @john,我如何调查/找到哪个进程占用 cpu。
  • @Ali,我会试试你的建议。稍后我会回复你的回答。还有一件事我的网站每 3 秒就有一个 ajax 调用,所以这可能是导致这个 CPU 利用率问题的原因吗?
  • Ajax 每 3 秒调用一次,听起来很有趣。另外,试试 John 的建议,找出每个进程的 CPU 利用率 ---> Linux cmd: { ps -p -o %cpu,%mem,cmd }。如果是 Windows,你可以在任务管理器中计算 CPU 利用率。
  • @Mech,调查资源消耗并不特定于 Amazon EC2。使用您可以在网上找到的适用于 Linux 的任何提示。从top 开始并从那里向下钻取。
【解决方案2】:

如果 cpu 利用率达到 100%,因为您的站点有 访问者数量,您必须考虑更改实例类型,Auto ScalingAWS CloudFront 以缓存尽可能多的 http尽可能多地请求(静态和动态内容)。

如果访问者不是问题,并且 EC2 实例上还有其他计划任务,我强烈建议通过 AWS SQSAWS Elasticbeanstalk - Worker type 解耦这些工作负载

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多