为什么我的Heroku应用程序的PostgreSQL数据库上有打开的连接?我该如何关闭它们?

时间:2012-09-21 15:10:58

标签: ruby postgresql heroku sinatra

我的Heroku应用是www.inflationtrends.com

通常,当我在Git Bash中运行“pg:info”以查看有多少连接时,该数字为零。

最近,我看到交通量激增 - 不多,过去48小时内只有1000多一点 - 当我今天早上(东部时间上午11点左右)运行“pg:info”时,结果显示有4个或5个开放连接。

我的应用程序使用Ruby gem Sinatra运行。在Sinatra文件中,我有以下代码:

after do
    DB.disconnect
end

加载页面后,“after do”循环与PostgreSQL数据库断开连接。

变量“DB”包含我的PostgreSQL数据库的连接信息(用户名,密码,主机,端口号,SSL模式要求):

DB = Sequel.postgres(
        db_name,
        :user=>user,
        :password=>password,
        :host=>host,
        :port=>port,
        :sslmode=>sslmode
    )

是否存在开放连接的原因?有没有办法关闭这些连接?是否有更有效的方法来处理这种情况?

3 个答案:

答案 0 :(得分:3)

检查Heroku上打开连接数的另一种方法是在控制台/终端中键入此内容并将“myapp”替换为您的应用程序名称:

heroku pg:info -a myapp

答案 1 :(得分:1)

您是否认为您的网站可能正在增加流量?当人们访问您的网站并使用您的应用程序时,将会打开连接。

尝试向您的网页添加一些跟踪代码(例如Google Analytics),然后检查记录的访问者数量是否与打开的连接数相匹配。

数据库也可能通过各种维护任务打开连接,例如备份。

答案 2 :(得分:1)

我抓住了以下工具带附加组件,它完美无缺。

https://github.com/heroku/heroku-pg-extras#usage

heroku pg:killall --app xyz