我最近注意到我的 Amazon RDS(db.m4.large 实例)上的可用内存正在迅速减少。在过去几周里,它从近 3700 MB 迅速下降到 1000 MB。不过应用程序没有出现任何问题。我的 CPU 利用率也一直很低 - 一直保持在 7% 左右。
我可以做些什么来清除内存?我担心如果以这样的速度发展下去,未来几天内存可能会耗尽。
答案1
最小 FreeabkeMemory 的下降趋势并不令人担忧。这意味着您的数据库进程正在向操作系统请求内存。至于数据库占用内存的原因,您需要参考引擎的供应商文档来测量内部内存结构并将其与您的工作负载联系起来。JOIN 和 ORDER BY 队列始终是频繁的内存消耗者,因为它们需要为工作表分配缓冲区。根据您的引擎或架构,这也可能导致临时或长期的磁盘使用,表现为最小 FreeStorageSpace 下降和最大 WriteIOPs 激增。甚至是 SwapUsage 的突然变化。
如果您重新启动实例,您将看到分配给数据库进程的所有内存都被释放,并且最小 FreeableMemory 将激增。然后,指标将再次缓慢下降。
最终,您希望数据库从操作系统分配内存。趋势的突然变化值得调查,并且是应用程序(数据库)级别的。
如果您想要更多操作系统指标,您可以随时启用增强监控:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html