我有3个带有pgpool的postgresql数据库(一个主数据库和两个从属数据库),每个数据库可以处理200个连接,我希望能够在pgpool上获得600个活动连接。
我的问题是,如果我将pgpool设置为600个子进程,它只能在一个数据库上打开600连接(例如,如果所有连接都进行写查询,则为master数据库),但是对于200个子进程,我只能使用+-每个数据库上有70个连接。
那么有没有一种方法可以配置pgpool以使其负载均衡能够随数据库数量的增加而扩展?
谢谢。
答案 0 :(得分:0)
每个数据库中有600个可用连接不是理想的解决方案。在设置如此高的连接值之前,我真的会研究我的应用程序。
可以通过设置相等的backend_weight参数来提高pgpool的负载平衡可伸缩性。这样一来,所有SQL查询都不会平均分配到postgresql节点中。
pgpool还使用num_init_children和max_pool参数管理数据库连接池。
num_init_children参数用于扩展将连接到每个PostgreSQL后端的pgpool进程。
另外num_init_children参数值是允许与pgpool连接的并发客户端数。
pgpool大致尝试使max_pool * num_init_children不再与每个Postgresql后端建立连接。