【问题标题】:Postgres connection not closing after sidekiq Ruby script在 sidekiq Ruby 脚本之后 Postgres 连接未关闭
【发布时间】:2015-05-15 20:57:35
【问题描述】:

这是一个在 Sidekiq 下运行的小型 Rub​​y 脚本。它打开与

的连接
    db_connect = Sequel.connect(@db_credential, search_path: @namespace)

它从不明确关闭连接;我认为这不应该是必要的?

脚本运行多次后,它们都已完成,Sidekiq 网页面板显示没有任务正在运行或排队,Postgres 显示 60 个 Sidekiq 连接:

postgres=# select count(*) from pg_stat_activity where application_name like '%sidekiq%';
 count 
-------
    60
(1 row)

数据库位于本地主机上,因此没有其他任何东西在创建这些连接。

psql 9.3.6、Sidekiq 3.3.3、Rails 4.0.0、ruby 2.1.1p76、续集 4.19.0、Ubuntu 14.04.2 LTS。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql sidekiq


    【解决方案1】:

    你可以:

    我认为您当前方法的问题在于,您正在通过调用Sequel.connect 在每个 Sidekiq 任务执行上构建一个新的连接池,并且这些连接一直存在。如果有的话,它们可能需要很长时间才能真正被垃圾回收。

    【讨论】:

    • 通过将max_connections: 10 或其他内容传递给connect 方法来限制连接池大小也可能有意义。
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    相关资源
    最近更新 更多