Amazon RDS耗尽可用内存.我应该担心吗?

wil*_*ell 55 amazon-web-services amazon-rds

我有一个Amazon RDS实例.自设置超过1-2周以来,可用内存一直在下降,从15GB内存下降到大约250MB.由于它在最后几天已经降低了这个低点,它已经开始像一个锯齿模式,其中可用内存下降到这个范围(250 - 350MB),然后以锯齿模式回升到500 - 600MB.

申请质量没有明显下降.但是,我担心数据库会耗尽内存并崩溃.

是否存在RDS实例内存不足的危险?是否有一些设置或参数我应该查看以确定实例是否设置正确?造成这种锯齿模式的原因是什么?

可用内存下降

Dmi*_*try 45

简短回答 - 你不应该担心FreeableMemory,除非它变得非常低(约100-200 Mb)或发生重大交换(参见RDS SwapUsage指标).

FreeableMemory不是MySQL指标,而是OS指标.很难给出精确的定义,但你可以将它视为操作系统能够分配给任何请求它的人的内存(在你的情况下它可能是MySQL).MySQL的有一组被限制它的整体内存使用一些上限设置(您可以使用像这样去实际计算的话).您的实例不太可能达到此限制,因为通常您永远不会达到最大连接数,但这仍然是可能的.

现在回到FreeableMemory指标的"下降".对于MySQL,大部分内存都由InnoDB缓冲池消耗(参见此处)详情).默认情况下,配置中的RDS实例将此缓冲区的大小设置为主机物理内存的75% - 在您的情况下大约为12 GB.此缓冲区用于缓存在读取和写入操作中使用的所有DB数据.所以在你的情况下,因为这个缓冲区真的很大 - 它正缓慢地填充缓存的数据(这个缓冲区实际上可能足以缓存所有数据库).因此,当您第一次启动实例时,此缓冲区为空,而不是一旦您开始读取/写入数据库,所有这些数据都将进入缓存.他们将留在这里,直到这个缓存变满,新请求来了.此时,最近最少使用的数据将被新数据替换.因此,数据库实例重启后FreeableMemory的初始下降解释了这一事实.这不是坏事,因为您实际上希望尽可能多地将数据缓存,以便让DB更快地工作.唯一可以讨厌的是当这个缓冲区的部分或全部被推出物理内存进入交换时.那时你将有巨大的性能下降.

作为一种预防性护理,如果您的FreeableMemory指标始终处于100-200 Mb的水平,那么调整用于不同事物的MySQL最大内存可能是一个好主意,这只是为了减少交换的可能性.


Lar*_*zie 43

MySQL使用可用内存字段来缓冲和缓存它自己的进程.可用内存量随时间减少是正常的.我不会担心因为它需要更多空间而踢出旧信息.