我在使用 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
,但是它完全与数据库断开连接,对吗?我想确保我的工作人员释放其连接,同时不终止任何其他工作人员的连接。
有什么办法可以实现这一点,或者我的推理是否有某种缺陷?
最佳答案
首先,您需要了解您的工作线程不一定使用单个连接,而是可能使用许多不同的连接,除非您专门通过 Database#synchronize
将其限制为单个连接。或Database#transaction
.
您不需要断开特定连接,因为预计连接将保留在 Sequel 的连接池中以供以后使用。您是否有理由认为应该断开连接并将其从池中删除?
关于ruby - 使用池时如何释放 Sequel 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39467410/