这是一个在Sidekiq下运行的小型Ruby脚本。它打开了与
的连接 db_connect = Sequel.connect(@db_credential, search_path: @namespace)
它永远不会明确地关闭连接;我认为这不应该是必要的吗?
脚本运行多次后,它们全部完成,Sidekiq Web面板显示没有正在运行或排队的任务,Postgres显示60个Sidekiq连接:
postgres=# select count(*) from pg_stat_activity where application_name like '%sidekiq%';
count
-------
60
(1 row)
数据库位于localhost上,因此没有其他任何东西可以创建这些连接。
psql 9.3.6,Sidekiq 3.3.3,Rails 4.0.0,ruby 2.1.1p76,续集4.19.0,Ubuntu 14.04.2 LTS。
答案 0 :(得分:3)
你可以:
db_connect
值来使用续集池disconnect
方法(http://sequel.jeremyevans.net/rdoc/classes/Sequel/Database.html#method-i-disconnect)手动断开连接。我认为您当前的方法存在的问题是,您正在通过调用Sequel.connect
在每个Sidekiq任务执行上构建一个新的连接池,并且这些连接一直存在。可能需要很长时间才能真正收集垃圾,如果有的话。