【问题标题】:How can I view/debug postgres database connections for Django app on Heroku?如何在 Heroku 上查看/调试 Django 应用程序的 postgres 数据库连接?
【发布时间】:2014-02-20 07:58:41
【问题描述】:

我在 Heroku 上运行的 Django 应用程序当前因 Too many connections for role "my_user" 错误而崩溃,我需要弄清楚发生了什么。我在提供 20 个连接的 heroku 上使用基本版本的 postgress。

根据我的错误页面,导致错误的具体代码行是:

/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

【问题讨论】:

    标签: django postgresql heroku


    【解决方案1】:

    我在 Heroku 的 postgres 经理的帮助下解决了这个问题。我需要的是:

    SELECT * FROM pg_stat_activity;
    

    一旦我看到每个连接的 backend_startquery_start 日期时间戳,很明显这是我计划的工作在每次运行时打开一个新连接 - 每 60 秒。现在我必须弄清楚如何让它重用连接和/或在完成后关闭连接。

    【讨论】:

    • 原来 Django 1.6.1 在运行管理命令后不会自动关闭数据库连接。所以我在我的伪 cron 作业中添加了 from django import dbdb.close_connection(),现在连接不再堆积。
    猜你喜欢
    • 2013-01-10
    • 2018-07-05
    • 2013-03-25
    • 2014-09-12
    • 2021-12-25
    • 1970-01-01
    • 2017-09-13
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多