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!