0

我正在使用 Sequel gem 连接到数据库。但是,数据库服务器是远程的,所以我必须先通过 SSH 登录。

我的 Ruby 脚本设置为每五分钟 SSH 进入,ping 数据库,然后关闭 SSH 连接。(SSH 由 Net::SSH::Gateway 处理。)

但是我最近在 MySQL 上遇到了“连接太多”的错误。在检查 MySQL 进程列表时,我从 Ruby 脚本中发现了一堆休眠连接。因此,我在db.disconnect脚本中添加了一行,以便在关闭 SSH 连接之前断开与数据库的连接,这似乎可以解决问题。

我的问题是,数据库连接不会自动关闭吗?为什么会有一堆休眠的 SQL 连接?

4

1 回答 1

2

由于您没有提供指向您正在使用的脚本的链接,因此很难准确地说出发生了什么。根据提供的有限信息,您可能每五分钟创建一次新的 Sequel::Database 对象。Sequel::Database 对象旨在提供与数据库的持久连接,通常在应用程序启动期间创建并存储在常量中。

通常,您应该创建一个 Sequel::Database 对象,然后每 5 分钟发送一个简单查询。或者,您应该为创建 Sequel::Database 对象的方法提供一个块,以便在块返回时自动关闭它。

于 2013-07-18T19:05:24.840 回答