[转帖]关于PostgreSQL里面的autovacuum服务的性能问题
最近线上Postgresql数据库中其中几台服务器更新时变得非常慢,经过排查和对比,发现时因为autovacuum未启动导致的。
http://www.voidcn.com/article/p-heemtnov-bgy.html
1、使用表pg_stat_all_tables查看autovacuum执行记录
select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;
如上图,发现所有的对象对应的analyze及vacuum执行记录均为空。
2、使用ps -ef | grep postgres发现postgres对应的analyze及vacuum进程均未启动
3、查看postgres.conf文件及show all查看autovacuum选项设置正常
autovacuum = on
4、查看文档autovacuum启动的三个条件如下:
a) 设置 autovacuum = on
b) 设置 track_counts = on
c) 设置 /etc/hosts #能 ping通 localhost(该条件之前不满足)
原来是这个原因导致的,最开始的时候因为项目特殊原因/etc/hosts文件中未设置localhost。
后来添加localhosts以后未重启Postgresql,导致track_counts在没有设置localhosts的情况下默认为off状态,而analyze及vacuum也无法启动,从而数据库对应表的统计信息及vacuum均未能成功执行。
5、找到原因以后,安排维护时间重启数据库以后,数据库恢复正常
可以看到进程autovacuum launcher process及stats collector process均启动成功
相关推荐
WanKaShing 2020-11-12
zhbvictor 2020-10-29
kls00 2020-10-15
89921334 2020-07-29
83911930 2020-07-28
89407707 2020-06-27
89921334 2020-06-26
89244553 2020-06-21
84593973 2020-06-21
83911930 2020-06-16
yaoding 2020-06-14
89244553 2020-06-11
89407707 2020-06-11
89921334 2020-06-10
89407707 2020-06-10
goodriver 2020-06-09
kevinli 2020-06-06
84593973 2020-06-05