码迷,mamicode.com
首页 > 数据库 > 详细

Postgresql数据库autovacuum进程启动失败

时间:2014-08-25 02:22:33      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:autovacuum异常

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


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

select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;

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



本文出自 “composer” 博客,请务必保留此出处http://zuoqujia.blog.51cto.com/9151800/1544236

Postgresql数据库autovacuum进程启动失败

标签:autovacuum异常

原文地址:http://zuoqujia.blog.51cto.com/9151800/1544236

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!