目前有两台postgres db, 使用stream replication 做主从同步,在比较重的写操作时发生了比较重的延迟.
通过对
pg_xlog_location_diff(pg_current_xlog_location(), sent_location) AS not_sent,
pg_xlog_location_diff(sent_location, write_location) AS not_written,
pg_xlog_location_diff(write_location, flush_location) AS not_flushed,
pg_xlog_location_diff(flush_location, replay_location) AS not_replayed
FROM pg_stat_replication;
这几个参数的监控,我们发现在
pg_current_xlog_location() - (sent_location)有比较重的延迟,延迟的size将近在100MB+ ,网络吞吐量最大值在10MB/s.
最大的延迟将近5分钟.
本地模拟:
更新数据表的字段 一个表将近110w数据 ,size 是 612 MB.
我们在观察主从两边的wal log 的数目时发现,此次操作总归会生产104个wal 文件 size =16MB* 104 =1.644268775GB.
手工对比主从库wal 文件状态,从库远远落后于主库,将近落后30多个wal file.
Client connecting to 192.168.6.55, TCP port 5001
[ 3] local 192.168.6.56 port 41489 connected with 192.168.6.55 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.09 GBytes 939 Mbits/sec
网卡最大值为1G.
数据库 MAX_SEND_SIZE (XLOG_BLCKSZ * 16)
XLOG_BLCKSZ= 8K
理论上 延迟最大值为一秒.
Postgres version:psql (PostgreSQL) 9.2.13
有没有其他参数会影响到stream replication的性能?
期待大家的回复,讨论.
把从库的fsync关掉,因为从库fsync调用还需要时间,你没有统计进去.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。