2011-02-13 29 views
4

我只是升级我的Web服务从Rails 2.3.8到Rails 3.0.3与Rails3,章鱼复制宝石查询错误期间MySQL服务器丢失连接

它几乎工作正常。

我有一个问题,当服务与capistrano一起部署时发生丢失的连接错误。每次部署大约发生3次。 该服务使用https://github.com/tchandy/octopus的章鱼宝石进行数据库复制,具有1个主数据库和2个从数据库。

的Mysql ::错误:查询过程中丢失连接到MySQL服务器:章鱼时不与单一的数据库使用SELECT regions * FROM regions WH ...是不是发生

的问题。但是流量需要复制。

请给我任何建议。谢谢。

回答

5

我是八达通的创造者。

你可以把它添加到你的shards.yml文件吗?

verify_connection: true 

而且,如果不工作,尝试轨配置为自动重新连接:

http://guides.rubyonrails.org/2_3_release_notes.html#reconnecting-mysql-connections

观测数据:这将与MySQL适配器,而不是只mysql2工作。

+0

谢谢!我很惊讶你是八达通的创造者。你是对的。这是解决方案之一。但是,这个问题不能由乘客解决。它使用Nginx + Unicorn解决。 – Jaehyun 2011-02-28 04:41:03

1

如果您使用Phusion Passenger和PassengerSpawnMethod smart

# config/initializers/phusion_passenger.rb 
if defined?(PhusionPassenger) 
    PhusionPassenger.on_event(:starting_worker_process) do |forked| 
    if forked 
     # the following is *required* for Rails + "PassengerSpawnMethod smart". 
     if defined?(ActiveRecord::Base) 
     # force reconnect to "master" connection. 
     ActiveRecord::Base.connection_pool.disconnect! 

     # force reconnect to our octopus "slave" pools. This may include the "master" pool above. 
     if defined?(Octopus) 
      ActiveRecord::Base.connection_proxy.instance_variable_get(:@shards).each { |name, pool| pool.disconnect! } 
     end 
     end 
    end 
    end 
end 

这有:

# database.yml and shards.yml 
reconnect: true 
相关问题