AWS RDS Postgres性能问题

我们使用实例types为db.m4.2xlarge的rds(postgres)。

通常大部分时间连接数是8-10。 但在某些情况下,连接数量增加到100-200。 数据库变得不响应。 数据库无响应性,我们已经看到很多时候在数量突然激增或读取连接的情况下(即使在连接从10增加到100的情况下)。

在max上执行的查询需要2秒才能执行。

我的应用程序服务器运行在Django / Python堆栈(与Gunicorn)。 DB服务器响应时间增加时,这些服务器的延迟变高。

postgres rdsconfiguration的任何改变,我们应该做的改善性能(目前大部分的设置是默认的)?

我有同样的问题。 postgresql在AWS RDS上设置,即使在增加实例之后,它仍具有100%的CPU利用率。 我用这里显示的方法debugging,其中一种方法为我工作。

我检查了运行时间最长的查询,结果发现某些查询被阻止,并且在超过3-4个小时的时间内运行。 要检查查询运行了多less时间,请运行以下命令:

 SELECT max(now() - xact_start) FROM pg_stat_activity WHERE state IN ('idle in transaction', 'active'); 

如果这是一个多小时,比这是问题。 杀死长时间运行的连接,并限制应用程序端连接的最大时间。

我敢打赌,你有一个特别慢的查询。 当这个运行时,连接堆积在它后面。 我将首先确定有问题的查询,然后找出如何解决这个问题。