FIX: run reaper after fork

This commit is contained in:
Sam 2014-08-11 17:51:55 +10:00
parent 9a46a156e4
commit f897c89d48
2 changed files with 17 additions and 12 deletions

View file

@ -1,13 +1,2 @@
# pg performs inconsistently with large amounts of connections # pg performs inconsistently with large amounts of connections
# this helps keep connection counts in check Discourse.start_connection_reaper
Thread.new do
while true
sleep 30
pools = []
ObjectSpace.each_object(ActiveRecord::ConnectionAdapters::ConnectionPool){|pool| pools << pool}
pools.each do |pool|
pool.drain(30.seconds)
end
end
end

View file

@ -258,9 +258,25 @@ module Discourse
Sidekiq.redis_pool.shutdown{|c| nil} Sidekiq.redis_pool.shutdown{|c| nil}
# re-establish # re-establish
Sidekiq.redis = sidekiq_redis_config Sidekiq.redis = sidekiq_redis_config
start_connection_reaper
nil nil
end end
def self.start_connection_reaper(interval=30, age=30)
# this helps keep connection counts in check
Thread.new do
while true
sleep interval
pools = []
ObjectSpace.each_object(ActiveRecord::ConnectionAdapters::ConnectionPool){|pool| pools << pool}
pools.each do |pool|
pool.drain(age.seconds)
end
end
end
end
def self.sidekiq_redis_config def self.sidekiq_redis_config
{ url: $redis.url, namespace: 'sidekiq' } { url: $redis.url, namespace: 'sidekiq' }
end end