<div dir="ltr"><div>A long time ago I was using heroku, MRI, puma, and ActionController::Live.  Exceptions would cause database connections to leak, this was a problem for me because the heroku free tier only gives you 20 database connections and I was using a db connection on every streaming request in order to use postresql's listen/notify feature ( instead of using, say, redis pub/sub). </div><div><br></div><div>This code <a href="https://gist.github.com/jlsync/ea499fa90a9abfe04fa9">https://gist.github.com/jlsync/ea499fa90a9abfe04fa9</a>  manages database connections by using</div><div>  </div><div>  ActiveRecord::Base.connection_pool.checkout </div><div><br></div><div>to get a connection and then a ruby "ensure" block at the end to "checkin" the connection back to the pool.</div><div><br></div><div>The code also uses</div><div><br></div><div>  Thread.list.count<br></div><div><br></div><div>to monitor the active ruby/puma thread count,  and also</div><div><br></div><div>  ActiveRecord::Base.connection_pool.size</div><div>  ActiveRecord::Base.connection_pool.connections.size<br></div><div><br></div><div>to monitor database connections.</div><div><br></div><div>You can see these monitoring counts being logged directly to the UI here  <a href="https://jlquiz.herokuapp.com/">https://jlquiz.herokuapp.com/</a> (after logging in).</div><div><br></div><div>my puma config included</div><div><div><br></div><div>  on_worker_boot do</div><div>    # worker specific setup</div><div>    ActiveSupport.on_load(:active_record) do</div><div>      ActiveRecord::Base.establish_connection</div><div>    end</div><div>  end</div></div><div><br></div><div><br></div><div>Using some of these ideas might help you.</div><div><br></div><div>Jason.</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 18, 2016 at 4:01 PM, Simon Morley <span dir="ltr"><<a href="mailto:simon@polkaspots.com" target="_blank">simon@polkaspots.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">As an interim update, adding the recommended ActiveRecord::Base.connection_pool.disconnect! doesn't seem to help :(<div><br></div><div>We're seeing far fewer timeouts but they're still happening on that db connection. And when they happen, it's carnage for 15s.</div></div><div class="gmail_extra"><br clear="all"><div><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><div><br></div><div><div>Simon Morley<br><span style="font-family:arial;font-size:small"><br></span></div><div><span style="font-family:arial;font-size:small">Big Chief</span> | PolkaSpots Supafly Wi-Fi<div>Bigger Chief | Cucumber Tony</div><div><br><div>Got an unlicensed Meraki? Set it free with Cucumber</div></div></div></div><div><a href="http://cucumberwifi.io/meraki" target="_blank">cucumberwifi.io/meraki</a></div><div><br></div></div></div></div></div></div></div></div>
</div><br></blockquote></div><br></div></div>