【发布时间】:2022-02-22 05:25:03
【问题描述】:
我已将我正在开发的 Django REST 框架 API 推送到 heroku,一切正常,然后突然之间,每当我调用我的端点时,我都会收到此错误:
/items/all_items 出现操作错误 连接到“ec2-3-230-149-158.compute-1.amazonaws.com”(3.230.149.158)上的服务器,端口 5432 失败:致命:剩余连接槽保留用于非复制超级用户连接
按照 heroku 的建议,我增加了 conn_max_age 的值。
知道为什么我会收到此错误,我该如何解决?
【问题讨论】:
-
问题是连接数而不是他们的年龄。事实上,增加
conn_max_age可能会使事情变得更糟,因为它会使连接保持更长的时间,而不是它们需要的时间。某些进程正在与数据库建立大量连接。你需要找出那是什么并从那里处理。要么提高连接效率,要么增加允许的连接数。 -
好的,阿德里安,谢谢。会努力的。
-
快速@Adrian....知道如何检查哪个进程与我的数据库建立了很多连接吗?我正在使用 redis yp 缓存一些端点,这可能是原因吗?
-
Redis 是缓存到数据库还是内存中?查看正在建立连接的最佳方法是查看 Postgres 日志和/或pg_stat_activity view。如果您正在查看日志,那么让
log_connections和log_disconnections根据 What to log 启用会很有帮助 -
Redis 正在缓存到内存中。好的,谢谢,我试试看。
标签: postgresql heroku django-rest-framework heroku-postgres