【发布时间】:2019-12-19 20:43:24
【问题描述】:
我有一个 PostgreSQL 复制 M-S,它仅在主服务器上使用 pgpool 作为负载平衡器。复制进展顺利,过程没有延迟。问题是,即使我为每台服务器配置了不同于 50% 的余额,主服务器接收的请求也比从服务器多。
这是后端重量为 M(1)-S(2) 的 pgpool show_pool_nodes
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+-------------+------+--------+-----------+---------+------------+-------------------+-------------------
0 | master-ip | 9999 | up | 0.333333 | primary | 56348331 | false | 0
1 | slave-ip | 9999 | up | 0.666667 | standby | 3691734 | true | 0
正如您所见,主服务器收到的请求比从服务器多 10 倍
这是后端重量为 M(1)-S(5) 的 pgpool show_pool_nodes
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay
---------+-------------+------+--------+-----------+---------+------------+-------------------+-------------------
0 | master-ip | 9999 | up | 0.166667 | primary | 10542201 | false | 0
1 | slave-ip | 9999 | up | 0.833333 | standby | 849494 | true | 0
当我分配 M(1)-S(1) 时的行为非常相似
现在我想知道我是否错过了对 pgpool 功能的理解:
Pgpool 仅平衡读取查询(因为写入查询发送到 永远大师)
后端权重参数仅用于计算分布 在平衡模式。值越大,就越有可能被选中 对于 pgpool,所以如果服务器有更大的 lb_weight 它会是 比其他值较低的人选择的次数更多。
如果我是对的,为什么会发生这种情况? 有没有一种方法可以实际分配 select_cnt 查询的适当平衡配置?我的意图是通过读取查询对从属设备过度收费,并让其只掌握“少数”读取查询,因为它正在占用所有写入。
【问题讨论】:
标签: database postgresql load-balancing pgpool