docker容器启动时出现{"log":"2019-10-15 09:35:17.210 UTC [42] FATAL:  53100: could not write lock file \"postmaster.pid\": No space left on device\n","stream":"stderr","time":"2019-10-15T09:35:17.210973351Z"}

No space left on device的异常,即设备空间不足

排查:

1、df -h

注:linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。
参数:
-h 方便阅读方式显示
-i 显示inode信息

显示如下:

可以看到/disk1 磁盘占用率达到100%

继续定位

2、du -h

注:

du:显示每个文件和目录的磁盘使用空间,也就是文件的大小。
参数:
-h 方便阅读方式显示
--max -depth=1:显示层级

如上图所示,可以看到是pgsql目录下的pg_wal导致的,这时就需要分析这个postgresql的pg_wal过大的原因了。

3、pg_wal过大的原因分析

通过分析postgresql.conf参数,发现配置了archive_mode=on,但是archive_command='', 由于没有配置archive_command,也就是说不会触发归档命令,造成xlog文件会一直堆积。

4、如何手动清理xlog文件?参考

①. 读取控制文件,找到哪个文件是可以被清理的。

命令:pg_controldata $PGDATA 

②、使用pg_archivecleanup清理pg_xlog目录。

pg_archivecleanup -d $PGDATA/pg_xlog 0000000100000001000000Aa

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐