Memory EC2 CloudWatch内存度量不';与顶级节目不相匹配

Memory EC2 CloudWatch内存度量不';与顶级节目不相匹配,memory,memory-management,amazon-ec2,amazon-cloudwatch,Memory,Memory Management,Amazon Ec2,Amazon Cloudwatch,我有一个t2.micro EC2实例,运行在大约2%的CPU上。我从其他帖子中了解到,TOP中显示的CPU使用情况与CloudWatch中报告的CPU使用情况不同,应该信任CloudWatch值 然而,我发现TOP、CloudWatch和NewRelic之间的内存使用值非常不同 实例上有1Gb的RAM,顶部显示约300Mb的Apache进程,以及约100Mb的其他进程。TOP报告的总内存使用量为800Mb。我猜有400Mb的操作系统/系统开销 然而,CloudWatch报告了700Mb的使用量,

我有一个t2.micro EC2实例,运行在大约2%的CPU上。我从其他帖子中了解到,TOP中显示的CPU使用情况与CloudWatch中报告的CPU使用情况不同,应该信任CloudWatch值

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

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

然而,CloudWatch报告了700Mb的使用量,NewRelic报告了200Mb的使用量(尽管NewRelic报告了别处300Mb的Apache进程,所以我忽略了它们)

CloudWatch内存指标通常超过80%,我想知道实际值是多少,这样我就知道什么时候需要扩展,或者如何减少内存使用

这是最近的内存配置文件,随着时间的推移,似乎有什么东西在使用更多的内存(大萧条是Apache重启,或者GC?)


CloudWatch实际上没有提供EC2实例的内存使用指标,您可以确认这一点

因此,您所指的MemoryUtilization度量显然是一个自定义度量,它是由您配置的东西或实例上运行的某个应用程序推动的

因此,您需要确定实际推动此度量数据的是什么。数据源显然推错了东西,或者不可靠


您看到的行为不是CloudWatch问题。

AWS不支持任何EC2实例的内存度量。由于Amazon从EC2实例(服务器)外部进行所有监控,因此无法捕获实例内部的内存度量。但是,为了完全监控实例,您必须需要任何实例的内存利用率统计数据,以及其CPU利用率和网络IO操作。 但是,我们可以使用cloudwatch的自定义度量功能将任何应用程序级数据发送到cloudwatch,并使用amazon工具对其进行监控。 有关更多详细信息,请访问此博客:


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

谢谢你的评论。为了澄清这一点,我使用Amazon提供的脚本将内存信息发送到Cloudwatch(),并将其与Top和NewRelic提供的内存信息进行比较,以显示不同的值,因此我试图了解在评估服务器何时达到容量时,最值得信任的是哪一个。这非常有趣。我不完全确定这些脚本是如何工作的,但我知道它们没有得到官方的支持。你在使用亚马逊Linux吗?也许其他Linux发行版的脚本也不那么可靠。。。我建议你把这个放在AWS官方支持的论坛上,参考“我知道他们不是官方支持的”——OP提供了AWS文档的链接。所以它是官方支持的,对吗?