Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services Amazon RDS的可用内存不足。我应该担心吗?_Amazon Web Services_Amazon Rds - Fatal编程技术网

Amazon web services Amazon RDS的可用内存不足。我应该担心吗?

Amazon web services Amazon RDS的可用内存不足。我应该担心吗?,amazon-web-services,amazon-rds,Amazon Web Services,Amazon Rds,我有一个Amazon RDS实例。自安装以来1-2周,可用内存一直在下降,从15GB内存下降到250MB左右。由于它在过去几天中已经降到了这么低的水平,它开始类似于锯齿模式,其中可释放内存下降到这个范围(250-350MB),然后以锯齿模式重新上升到500-600MB 应用程序质量没有明显下降。但是,我担心数据库会耗尽内存并崩溃 RDS实例是否存在内存不足的危险?我是否应该查看一些设置或参数来确定实例是否设置正确?是什么导致了这种锯齿状图案 MySQL使用可释放内存字段为自己的进程进行缓冲和缓存

我有一个Amazon RDS实例。自安装以来1-2周,可用内存一直在下降,从15GB内存下降到250MB左右。由于它在过去几天中已经降到了这么低的水平,它开始类似于锯齿模式,其中可释放内存下降到这个范围(250-350MB),然后以锯齿模式重新上升到500-600MB

应用程序质量没有明显下降。但是,我担心数据库会耗尽内存并崩溃

RDS实例是否存在内存不足的危险?我是否应该查看一些设置或参数来确定实例是否设置正确?是什么导致了这种锯齿状图案


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

简短回答-您不应该担心可用内存,除非它变得非常低(约100-200 Mb)或发生重大交换(请参阅RDS交换度量)

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

现在回到FreeableMemory指标的“下降”。对于MySQL,InnoDB缓冲池消耗的大部分内存(有关详细信息,请参阅)。默认情况下,配置中的RDS实例将此缓冲区的大小设置为主机物理内存的75%——在您的情况下大约为12GB。此缓冲区用于缓存读写操作中使用的所有DB数据。 因此,在您的情况下,由于这个缓冲区非常大,它正在缓慢地填充缓存的数据(很可能这个缓冲区实际上足够大,可以缓存所有数据库)。所以,当您第一次启动实例时,这个缓冲区是空的,并且在您开始将内容读/写到DB中时,所有这些数据都会带到缓存中。他们将一直呆在这里,直到缓存已满且新请求出现。此时,最新使用的数据将替换为新数据。所以DB实例重启后FreeableMemory的初始下降可以用这个事实来解释。这并不是一件坏事,因为您实际上希望尽可能多的数据被缓存,以便DB更快地工作。唯一可能发生的事情是,当部分或全部缓冲区将从物理内存中推出到交换中时。在这一点上,您将有巨大的性能下降


作为一种预防措施,如果FreeableMemory度量值一直处于100-200 Mb的水平,那么最好调整用于不同事情的MySQL max内存,以减少交换的可能性。

在AWS的几张支持票之后,我发现调整参数组会有所帮助,特别是共享缓冲区,降低它们以保持保留数量,以避免由于内存不足而导致的丢失或故障转移

您能指出提到这一点的mysql文档吗?-但是,这并不是严格意义上的MySQL。操作系统本身(RDS与否)通常也会缓存I/O。结合MySQL缓冲/缓存和操作系统缓存(磁盘)I/O,典型的操作系统几乎总是填满可用的RAM(并根据需要刷新条目)。这是可取的——不错。Linux通常会在没有SQL进程的情况下耗尽大量/所有可用RAM。如前所述,除非freeable变得非常低(并且停留在那里/交换),否则您就可以了。