我正在使用Sequel gem和Postgres面临一些汇集问题。 我相信我的Sidekiq工作不会释放他们在游泳池中使用的连接。
使用以下方法启动Sidekiq时连接到数据库:
DB = Sequel.connect(db_uri, max_connections: 20)
我在考虑一些Sidekiq中间件,如下:
module Middleware
class SequelDisconnector
def call(*args)
yield
ensure
DB.release_active_pool_connection
end
end
end
我知道有DB.disconnect
但是完全脱离了数据库权限吗?我想确保我的工作人员释放其连接,同时不会杀死任何其他工作人员的连接。
有没有办法实现这一点,或者我的推理中存在某种缺陷?
答案 0 :(得分:2)
首先,您需要了解您的工作人员不一定使用单个连接,但可能使用许多不同的连接,除非您专门通过Database#synchronize
或{{将某些连接限制为单个连接。 1}}。
您不需要断开特定连接,因为预期连接将保留在Sequel的连接池中供以后使用。您是否认为应该断开连接并从池中删除连接?