我有一个关于AWS Aurora Postgres的可自由记忆的问题。
我们最近想在我们的一个dbs上创建一个索引,数据库就死了,并对奴隶进行了故障转移,所有这些都工作得很好。看起来,配置好的500 by的maintenance_work_mem丢弃了可释放的内存,到了800 by左右的内存--就在32G实例死后不久。
1)我想知道,可释放的内存是否是整个系统内存,这里的低内存是否可以在AWS Aurora实例上调用system杀手?因此,我们可能想要在更多的头部空间为操作任务和运行的自动真空作业,以避免再次遇到这个问题?
2)根据我的理解,创建索引的实际工作应该使用免费的本地存储,所以索引的大小不应该重要,对吗?
谢谢你,克里斯
发布于 2020-02-05 12:08:15
关于1)
(https://forums.aws.amazon.com/thread.jspa?threadID=209720)的可释放内存
可释放的内存量包括系统未使用的物理内存量,再加上可用的缓冲区或页面缓存内存的总量。
所以它可以在整个系统中释放内存。虽然MySQL是主机上内存的主要使用者,但除了消耗少量额外内存的OS之外,我们还有内部进程。
如果您看到您的可释放内存接近于0,或者也开始看到交换使用情况,那么您可能需要扩展到一个更大的实例类,或者调整MySQL内存设置。例如,减少innodb_buffer_pool_size (默认设置为75%的物理内存)是调整MySQL内存设置的一种方法。
这也意味着,如果内存不足,它可能会以某种形式影响进程。例如,在这个线程(https://forums.aws.amazon.com/thread.jspa?messageID=881320)中,提到它导致mysql服务器重新启动。
关于2)
这就像文档(https://aws.amazon.com/premiumsupport/knowledge-center/postgresql-aurora-storage-issue/)中描述的那样,所以我想它的正确性和大小不应该重要。
用于临时数据和日志的
存储(本地存储)。所有DB临时文件(例如日志和临时表)都存储在实例本地存储中。这包括查询所需的排序操作、哈希表和分组操作。
每个Aurora实例包含由实例类确定的有限数量的本地存储。通常,本地存储量是实例上内存量的两倍。如果执行一个需要比实例可用内存更多的排序或索引创建操作,Aurora将使用本地存储来完成该操作。
https://stackoverflow.com/questions/59899028
复制相似问题