我在Heroku上运行的Django应用程序当前崩溃,出现Too many connections for role "my_user"
错误,我需要弄清楚发生了什么。我在heroku上使用基本版本的postgress,提供20个连接。
根据我的错误页面,导致错误的特定代码行是:
/app/.heroku/python/lib/python2.7/site-packages/psycopg2/__init__.py in connect
...
conn = _connect(dsn, connection_factory=connection_factory, async=async)
...
我的工作每60秒运行一次,如下所示。这可能是每次运行时创建一个新连接并保持其先前的连接打开吗?我怀疑没有,因为这项工作运行了几个小时而没有最大化连接。
Clock.py文件(每60秒运行一次以发送任何排队的邮件):
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'anonqaproject.settings'
from apscheduler.scheduler import Scheduler
from post_office import utils
sched = Scheduler()
@sched.interval_schedule(minutes=1)
def timed_job():
utils.send_queued_mail()
sched.start()
while True:
pass
答案 0 :(得分:2)
我在Heroku的postgres经理的帮助下想出了这个。我需要的是:
SELECT * FROM pg_stat_activity;
一旦我看到每个连接的backend_start
和query_start
日期时间戳,很明显这是我的预定作业每次运行时都会打开一个新连接 - 每隔60秒。现在我必须弄清楚如何在完成后重新使用连接和/或关闭连接。