在AWS-RDS上拥有postgres数据库Swap Usage
不断上升。
为什么会上升?我尝试重新启动,但它没有下沉。 AWS写道,高交换使用率是<#34; 表示性能问题&#34;
准确地说,我有一个
db.t2.micro
- 实例,目前~5 / 100 GB数据,5个表 - 通用SSD。使用默认的postgresql.conf。
交换图如下所示:
交换使用警告:
答案 0 :(得分:4)
好吧您的查询似乎使用的是超出可用内存量的内存。因此,您应该查看查询执行计划并找出最大负载。该查询超出了postgresql可用的内存。通常过多的连接(即错误的数据库结构,如果适用,这将是更好的非经规范化),或许多嵌套查询,或带有IN子句的查询 - 这些都是典型的嫌疑人。我想amazon尽可能地为postgresql.conf提供了这些微小机器的默认值。
但是再一次,除非你的交换大小没有超过你的可用内存并且你在SSD上 - 它不会有那么大的伤害
答案 1 :(得分:1)
检查
select * from pg_stat_activity;
并查看哪个流程需要很长时间以及处理多少进程,请尝试根据需要更改RDS数据库参数。
答案 2 :(得分:0)
显然你的内存不足了。 db.t2.micro只有1GB的RAM。您应该查看htop输出以查看哪些进程占用了大部分内存并尝试优化内存使用情况。还有一个很好的实用程序叫做pgtop(http://ptop.projects.pgfoundry.org/),它显示当前查询,读取的行数等。您可以使用它来实时查看您的postgress状态。顺便说一句,如果你不能安装pgtop,你可以从posgres内部工具获得相同的信息 - 查看postgres stats collector https://www.postgresql.org/docs/9.6/static/monitoring-stats.html的文档
实际上很难说出问题究竟是什么,但db.t2.micro是一个非常有限的实例。你应该考虑采用一个更大的实例,特别是如果你在生产中使用postgres。