memory - EC2 CloudWatch 内存指标与 Top 显示的不匹配

标签 memory memory-management amazon-ec2 amazon-cloudwatch

我有一个 t2.micro EC2 实例,以大约 2% 的 CPU 运行。我从其他帖子中知道 TOP 中显示的 CPU 使用率与 CloudWatch 中报告的 CPU 不同,并且应该信任 CloudWatch 值。

但是,我发现 TOP、CloudWatch 和 NewRelic 之间的内存使用值非常不同。

实例上有 1Gb 的 RAM,TOP 显示约 300Mb 的 Apache 进程,以及约 100Mb 的其他进程。 TOP 报告的总体内存使用量为 800Mb。我猜有 400Mb 的操作系统/系统开销?

但是,CloudWatch 报告了 700Mb 的使用量,而 NewRelic 报告了 200Mb 的使用量(尽管 NewRelic 报告了 300Mb 的其他地方的 Apache 进程,所以我忽略了它们)。

CloudWatch 内存指标通常超过 80%,我想知道实际值是多少,因此我知道必要时何时进行扩展,或者如何减少内存使用量。

这是最近的内存配置文件,随着时间的推移,似乎有些东西正在使用更多的内存(大幅下降是 Apache 重启,还是 GC?)

Screenshot of memory usage over last 12 days

最佳答案

AWS 不支持任何 EC2 实例的内存指标。由于亚马逊从 EC2 实例(服务器)外部进行所有监控,因此无法捕获实例内部的内存指标。但是,要完全监控实例,您必须需要任何实例的内存利用率统计信息,以及他的 CPU 利用率和网络 IO 操作。
但是,我们可以使用 cloudwatch 的自定义指标功能将任何应用程序级数据发送到 Cloudwatch 并使用亚马逊工具对其进行监控。
您可以关注此博客了解更多详情:http://upaang-saxena.strikingly.com/blog/adding-ec2-memory-metrics-to-aws-cloudwatch

您可以在该实例中设置 5 分钟间隔的 cron,所有数据点都可以在 Cloudwatch 中看到。

关于memory - EC2 CloudWatch 内存指标与 Top 显示的不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36296440/

相关文章:

java - VisualVM 堆大小不遵循已用大小

C++ 2D数组内存分配

amazon-web-services - 基于 AWS Application Load Balancer (ALB) 路径的路由未按预期运行

windows - 为什么我在 Windows 上使用 Perl-Tk 构建复杂的 GUI 时遇到问题?

memory - 在 Rancher 中为容器选择可用内存

java - 想要查看 Eclipse 中一个 Java 对象使用的内存

java - 在 Java 中,物理内存如何保存每个长度为 1MB 的字符串 HashMap ?

amazon-ec2 - gettimeofday() 不使用 vDSO?

amazon-web-services - 在 AWS CloudFormation 模板中,如何将 EC2 实例放置在 Spot 队列确定的子网中?

C++ init for循环内的多个类对象提供相同的内存地址?