gpt4 book ai didi

ruby-on-rails - Rails 3 DB 连接池 - 连接未关闭

转载 作者:行者123 更新时间:2023-11-29 11:48:02 25 4
gpt4 key购买 nike

Stack 是 Rails 3/Postgres + mongrel。我最近不得不增加连接池,因为对其中一个杂种的点击总是超时。我推断,如果有 3 个杂种 + 每个运行一个 delayed_job,我需要在池中有 6 个连接(它被设置为 5)。我在 database.yml 中将其增加到 10,它解决了超时问题,但现在当我在 PG 中监视连接时,我看到了这种情况;

SELECT datname,usename,procpid,client_addr,waiting,query_start,current_query FROM pg_stat_activity;


db1 | www-data | 8658 | | f | 2014-03-19 10:03:54.084825+00 | <IDLE>
db1 | www-data | 9071 | | f | 2014-03-19 09:58:42.306558+00 | <IDLE>
db1 | www-data | 8721 | | f | 2014-03-19 10:03:53.980691+00 | <IDLE>
db1 | www-data | 8722 | | f | 2014-03-19 10:03:53.874443+00 | <IDLE>
db1 | www-data | 8733 | | f | 2014-03-19 10:04:20.380137+00 | <IDLE>
db1 | www-data | 9080 | | f | 2014-03-19 10:00:54.157541+00 | <IDLE>
db1 | www-data | 10843 | | f | 2014-03-19 10:04:18.506355+00 | <IDLE>
#and so on and so on for more than 20 instances...

它会膨胀到超过 20 个连接并且似乎没有关闭它们(我假设 still 的存在意味着它们处于打开状态,只是什么都不做)。它似乎上下波动,因此一些连接正在关闭。

我认为 rails/activerecord 应该自动关闭它的连接,但事实并非如此。

我没看错吗?我有地方漏水吗?可能是什么原因造成的?

最佳答案

在 Controller 发起的操作之外使用 ActiveRecord 事务时,例如在延迟作业中,您必须使用以下语法来确保连接返回到池中

ActiveRecord::Base.connection_pool.with_connection do
#your code here
end

关于ruby-on-rails - Rails 3 DB 连接池 - 连接未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22502395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com