首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Heroku Postgres:连接太多了。我如何杀死这些连接?

Heroku Postgres:连接太多了。我如何杀死这些连接?
EN

Stack Overflow用户
提问于 2013-11-06 22:30:54
回答 6查看 47.9K关注 0票数 46

我有一个在Heroku上运行的应用程序。此应用程序安装了Postgres 9.2.4 (Dev)插件。为了访问我的在线数据库,我使用Navicat Postgres。有时Navicat不会干净地关闭它与Postgres数据库建立的连接。结果是,一段时间后,就会有20+打开到Postgres数据库的连接。我的Postgres安装只允许20个并发连接。因此,使用20+打开的连接,我的Postgress数据库现在是无法访问的(连接太多)。

我知道这是Navicat的一个问题,我正在努力解决这个问题。但是如果发生这种情况(连接太多),我如何解决这个问题(例如关闭所有连接)。

我已经尝试了以下所有的方法,但都没有结果。

Postgres路由器关闭Navicat并重启我的电脑(OS X 10.9)

  • Restarted my Heroku应用程序(heroku restart)

  • Tried以重启在线数据库,但我发现没有此选项可供选择)Postgres

  • 手动关闭从OS X到我们的路由器

的IP的所有连接

我认为很明显,Postgres方面有一些“死亡”的联系。但是我如何关闭它们呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-06 23:32:41

也许可以看看heroku pg:kill能为您做些什么?https://devcenter.heroku.com/articles/heroku-postgresql#pg-ps-pg-kill-pg-killall

票数 41
EN

Stack Overflow用户

发布于 2014-02-05 15:18:41

heroku pg:killall将杀死所有打开的连接,但这可能是一个迟钝的工具来满足您的需求。有趣的是,你可以使用heroku的来杀死特定的连接

要获取详细的连接列表,可以通过dataclips进行查询:

代码语言:javascript
复制
SELECT * FROM pg_stat_activity;

在某些情况下,您可能想要终止与某个IP地址关联的所有连接(您的笔记本电脑或在我的情况下,现在已被销毁的服务器)。

您可以使用以下命令查看每个客户端IP有多少个连接:

代码语言:javascript
复制
SELECT client_addr, count(*) 
FROM pg_stat_activity 
WHERE client_addr is not null 
  AND client_addr <> (select client_addr from pg_stat_activity where pid=pg_backend_Tid()) 
GROUP BY client_addr; 

它将列出每个IP的连接数量,不包括数据链路本身使用的IP。

要真正杀死这些连接,需要将它们的"pid“传递给pg_terminate_backend()。在这个简单的例子中:

代码语言:javascript
复制
SELECT pg_terminate_backend(1234)

其中,1234是您在pg_stat_activity中找到的违规PID。

在我的例子中,我想要杀死与一个(现在已经死掉的)服务器相关的所有连接,所以我使用:

代码语言:javascript
复制
SELECT pg_terminate_backend(pid), host(client_addr) 
FROM pg_stat_activity 
WHERE host(client_addr) = 'IP HERE'
票数 21
EN

Stack Overflow用户

发布于 2013-11-06 22:46:00

来自Heroku documentation (重点是我的):

致命:角色的连接太多

致命:角色“角色名称”的连接太多这发生在入门层(开发和基本)计划上,每个用户的最大连接限制为20。要解决此错误,请通过停止后台工作进程、减少dynos数量或重新启动应用程序来关闭与数据库的某些连接,以防应用程序随着时间的推移而造成连接泄漏。可以在此处找到有关在Rails应用程序中处理连接的讨论。

由于Heroku does not provide superuser access,您的选择仅限于上述几点。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19814740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档