ActiveRecord::ConnectionTimeoutError: could not obtain a database connection within 5.000 seconds (waited 5.000 seconds)
I had the same problems which were caused by too many open connections to the database. This can happen when you have database queries outside of a controller (in a model, mailer, pdf generator, ...).
I could fix it by wrapping those queries in this block which closes the connection automatically.
ActiveRecord::Base.connection_pool.with_connection do
# your code
end
Since Puma works multi-threaded, the pool size (as eabraham mentioned) can be a limitation, too. Try to increase it (a little)...
I hope this helps!
With the help of the devise guys' I think I finally got this issue figured out. It seemed that by using custom error pages with it's own controller, I wasn't skipping the before_action get_new_messages
. So the very simple fix was to add:
skip_before_filter :get_new_messages
to my custom error controller.
This issue explains in detail the reason behind this: https://github.com/plataformatec/devise/issues/3422