引入
在工作项目的服务器中,用的是postgresql数据库,一直以来并没有报过磁盘空间不足,但是今天早上回来发现ovirt管理端登录不上,排查发现pgsql服务没有了,没有人动过服务器,于是重新开启了pgsql服务,一切正常。但是为啥pgsql会自己关掉?去查看了pgsql的日志文件,发现它报了一个磁盘空间不足的错误。
相关资料
百度以下发现这问题还是有记录的
AUTOVACUUM
在查资料过程中一些文章提到了AUTOVACUUM,它是一个pgsql集成好的一个守护进程,就是用来进行一些清理管理工作的
开启AUTOVACUUM
在pgsql的配置文件中,可以直接配置AUTOVACUUM的参数
autovacuum = on // 是否开起autovacuum。当需要冻结xid(事务ID)时,值为off,PG也会进行vacuum操作。
autovacuum_max_workers = 5 // 线程数,根据服务器处理器合理分配
autovacuum_naptime = 50min // 两次vacuum操作间隔时间
autovacuum_vacuum_threshold = 50 // vacuum触发条件:某表DML操作的最小行数
autovacuum_analyze_threshold = 50 // analyze触发条件:某表DML操作的最小行数
这里还有一个参数我认为非常需要修改,就是work_mem。因为很多临时文件的产生就是因为工作内存的溢出,而work_mem默认配置为4MB,通常不够用。很多情况下比较常见的配置为64MB
work_mem = 64MB # min 64kB