2013-07-18 36 views
0

我正在使用Sequel gem来连接到数据库。数据库服务器是远程的,所以我必须先通过SSH登录。使用Net :: SSH :: Gateway时,是否需要手动关闭续集gem连接?

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

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

我的问题是,是不是自动关闭数据库连接?为什么会有大量睡眠SQL连接?

回答

1

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

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

相关问题