Postgresql数据库autovacuum进程启动失败

Postgresql数据库autovacuum进程启动失败,第1张

概述最近线上Postgresql数据库中其中几台服务器更新时变得非常慢,经过排查和对比,发现时因为autovacuum未启动导致的。 1、使用表pg_stat_all_tables查看autovacuum执行记录 select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables; 如上图,发现所有的对象

最近线上Postgresql数据库中其中几台服务器更新时变得非常慢,经过排查和对比,发现时因为autovacuum未启动导致的。


1、使用表pg_stat_all_tables查看autovacuum执行记录

selectschemaname,relname,last_autovacuum,last_autoanalyzefrompg_stat_all_tables;

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="3.png" alt="wKioL1P5_8qwmN2gAAEZ9Q0KloA474.jpg" src="http://s3.51cto.com/wyfs02/M02/47/61/wKioL1P5_8qwmN2gAAEZ9Q0KloA474.jpg">

上图,发现所有的对象对应的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、找到原因以后,安排维护时间重启数据库以后,数据库恢复正常

650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="1.png" alt="wKiom1P6yV6RzWrzAAG9qdB-fa4502.jpg" src="http://s3.51cto.com/wyfs02/M02/47/6E/wKiom1P6yV6RzWrzAAG9qdB-fa4502.jpg">

可以看到进程autovacuum launcher process及stats collector process均启动成功

总结

以上是内存溢出为你收集整理的Postgresql数据库autovacuum进程启动失败全部内容,希望文章能够帮你解决Postgresql数据库autovacuum进程启动失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/sjk/1176826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存