環境
コネクションプーリングとは
割愛 以下のサイトが詳しい
やり方
database.ymlにreaping_frequency: nil
を追加するだけ
default: &default adapter: mysql2 encoding: utf8mb4 reaping_frequency: nil pool: 10
reaping_frequencyとは
ActiveRecordでは接続して処理が終わっても一定時間は接続しっぱなしになる。その一定時間がreaping_frequency(秒)
実装はactiverecord内のReaperクラスを見るとわかる
# Every +frequency+ seconds, the reaper will call +reap+ and +flush+ on # +pool+. A reaper instantiated with a zero frequency will never reap # the connection pool. # # Configure the frequency by setting +reaping_frequency+ in your database # yaml file (default 60 seconds). class Reaper attr_reader :pool, :frequency def initialize(pool, frequency) @pool = pool @frequency = frequency end def run return unless frequency && frequency > 0 Thread.new(frequency, pool) { |t, p| loop do sleep t p.reap p.flush end } end end
デフォルトでは60秒。nilの場合はそもそもrunのsleepしないのでプーリングが走らないってわけ