问题描述
我有2台服务器(A,B)。 我在A中运行Rails应用程序,在B中运行数据库。 在服务器B中,我正在运行pgbouncer和postgresql。
当我在A中运行200个线程时,即使我将pgbouncer最大客户端连接数增加到500,也遇到了这个问题。pgbouncer pool_mode是会话。 Postgresql池为100。
如何避免此问题并运行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远程访问问题。 我认为这是远程访问问题。