我有2台服务器(A,B)。我在A中运行rails app,在B中运行db。在服务器B中,我正在运行pgbouncer和postgresql。
当我在A中运行200个线程时,即使将pgbouncer的最大客户端连接数增加到500,也遇到了这个问题。pgbouncer pool_mode是会话。Postgresql池为100。
我还将服务器A中的数据库池增加到500。
如何避免此问题并运行200个线程而没有任何问题?
稍后,我更新了代码。删除pgbouncer并直接使用postgresql。创建了2个执行数据库操作的新线程,其他线程不再进行数据库操作。在线程运行时,我正在监视活动连接。它保持3处于活动状态。但是在线程结束时,我遇到了这个问题。我使用ActiveRecord :: Base.connection_pool.stat显示了连接池状态
{:size=>500, :connections=>4, :busy=>3, :dead=>0, :idle=>1, :waiting=>0, :checkout_timeout=>5}
rake aborted!
ActiveRecord::StatementInvalid: PG::UnableToSend: no connection to the server
有谁可以帮助我解决这个问题?
我合并了数据库实例和应用程序实例。这样可行。我仍然不确定是数据库版本问题还是PostgreSQL远程访问问题。我认为这是远程访问问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句