繁体   English   中英

AWS ec2 实例高 CPU 使用率

[英]AWS ec2 instance high CPU Usage

我们有一个 ec2 实例,平均使用率约为 10%。 有时,我们会遇到大约 95% 的峰值——此时我们会触发警报,以便我们可以检查日志。 我检查了日志,看起来好像另一家公司拥有的站点对我们的站点进行了多次抓取,从而导致高峰值,从而触发了不再生产的 php 脚本的 mysql 错误。 站点突然占用您的服务器是否正常?

  • 如果 url 中有任何模式,您可以使用 haproxy 服务器来避免不需要的请求。 随着时间的推移不断更新。
  • 当 url 不匹配时,总是有一个 404 错误页面,并且不要重定向到主页,因为它减少了服务器的负载。 如果您的主页很轻且没有太多数据查询,则可以忽略此选项。

检查增加用户数量时的负载,每个新请求都会跟踪 CPU 利用率的上升情况。

您无法完全避免不需要的请求,但可能会将其减少到一定程度。

还有一种我观察到的微实例行为,一旦达到 100% 或接近 100%。 即使没有进一步的请求,也需要几秒钟才能返回。 如果您预计有时会出现不需要的流量,微型实例可能不适合生产。

关于您的错误,可能是由于缺乏可用的 ram 和 mysql 进入死锁状态或类似情况。 稍后我会进一步更新。

当然,网络请求的激增可能会增加 CPU 利用率,如果网络负载足够大,它肯定会导致 CPU 使用率飙升至 100%。

关于 PHP 脚本中的 MySQL 错误,这可能是因为您的数据库无法处理更多连接,并且在脚本中连接到数据库失败。 如果您记录错误,您应该查看错误的详细信息。 如果你不记录错误,你应该开始这样做。

要验证此网络峰值导致此 CPU 峰值达到 100%,请使用 CloudWatch - 它是您的朋友。 打开您的实例的 NetworkIn 和 CPU 利用率图表,并确保您查看的是“Maximum”统计信息。 比较图表并观察网络峰值是否反映在 CPU 峰值中。

如果您从不需要的来源接收流量,请使用网络 ACLS (NACLS) 阻止其 IP:
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html

如果您经常在此实例上遇到高流量,则应考虑迁移到 Auto Scaling。 使用 Auto Scaling,您可以让多个节点通过 ELB 为您的站点提供服务。 Web 请求发送到您的域名,由 ELB 捕获,然后转发到 Auto Scaling 组中的节点。 借助 Auto Scaling,您可以使用 CloudWatch 警报来允许您的基础设施动态扩展。 例如。 当我的服务器的平均 CPU 利用率达到 70% 时,启动额外的服务器来分散负载。
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/WhatIsAutoScaling.html

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html

这是一个关于如何实现这种架构的很棒的教程:
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/as-register-lbs-with-asg.html

但是,对您的问题给出一个简单的答案,是的,网络中的大量峰值使您的实例的 CPU 过载是正常的。

当网站的公共 URL 在 google/bing 或任何其他机器人上注册时,人们通常会遇到这种情况,并且机器人会在一两天内抓取每个 URL 一次,这导致当时 CPU 使用率高,这是正常的. 我以前也遇到过这个问题。 如果它来自 google bot,您可以从那里删除或取消注册,对于其他站点,您需要找出任何自定义解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM