我一直在尝试调试我的应用程序正在解决的问题" OperationalError:致命:剩余的连接插槽是为非复制超级用户连接而保留的#34;使用postgres 9.4和Django 1.10。
作为从1.8到1.10的转换的一部分,我们开始使用普通的'芹菜而不是dj芹菜为我们的任务安排。
Threaded Django task doesn't automatically handle transactions or db connections? 上面的SO问题让我觉得问题可能是我们的芹菜任务保持了他们的联系。我可以看到如何从dj-芹菜转向芹菜会影响我们的django整合。
我已经将最大连接数从100增加到500(在我们硬件的内存容量范围内)作为一个绑定,但我需要这个连接计数下降。目前,连接数似乎稳定在180并且不会进一步上升,但我担心无法在问题上投入更多内存。
虽然我怀疑芹菜,但它可能是我的应用程序代码的另一部分未能关闭这些连接。有没有办法让我在Postgres看到哪些连接保持开放状态?我到目前为止唯一运行的查询是SELECT numbackends FROM pg_stat_database;
,但这只会告诉我我打开了一定数量的连接。我喜欢回溯或查询计划,了解在给定时间打开连接的原因。