Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 超时后断开ruby中的mysql连接_Ruby On Rails_Ruby On Rails 4_Activerecord_Puma - Fatal编程技术网

Ruby on rails 超时后断开ruby中的mysql连接

Ruby on rails 超时后断开ruby中的mysql连接,ruby-on-rails,ruby-on-rails-4,activerecord,puma,Ruby On Rails,Ruby On Rails 4,Activerecord,Puma,我的网络防火墙会在几分钟后杀死所有空闲连接。这导致我们的rails应用程序不断重新连接,最终数据库开始拒绝连接,因为达到了最大连接限制。不幸的是,我没有能力改变网络或数据库 我正在寻找一种方法,在每个连接上空闲1分钟后抢先断开连接。我想在池中的每个连接上记录一个时间戳,方法是在: ActiveRecord::ConnectionAdapters::MysqlAdapter#执行 基本上 attr_reader :last_used_at def execute @last_used_at

我的网络防火墙会在几分钟后杀死所有空闲连接。这导致我们的rails应用程序不断重新连接,最终数据库开始拒绝连接,因为达到了最大连接限制。不幸的是,我没有能力改变网络或数据库

我正在寻找一种方法,在每个连接上空闲1分钟后抢先断开连接。我想在池中的每个连接上记录一个时间戳,方法是在:

ActiveRecord::ConnectionAdapters::MysqlAdapter#执行

基本上

attr_reader :last_used_at
def execute 
  @last_used_at = Time.now 
  super
end 
然后,让一个连接隔离开关螺纹在轨道上运行,启动时通过每个连接并断开(#断开!)空闲超过一分钟的任何连接

这在webrick中运行良好,但在puma中,由于某种原因,连接隔离开关无法读取在MysqlAdapater on execute中设置的@last_used_at实例变量。我可以看到连接池中的所有连接,但是当我检查它们的时间戳时,它们都是空的

我想这与puma和mysql一起工作以保持每个线程状态分离的方式有关?我在这里不知所措。任何指针都会非常有用