突然,我的 postgresql 服务由于某种原因开始崩溃。我想生成 coredump 文件,但文件没有生成。
我设置了:“ulimit -S -c unlimited”,还在 /etc/security/limits.conf 中添加了行“*soft core unlimited”。
还将我的目标目录设置为 kernel.core_pattern="/coredumps/core-%e-%s-%u-%g-%p-%t"。还对目标路径执行了“chmod 777”以消除权限问题。我能够通过执行“perl -MPOSIX -e '$0="ttt"; pause' &”然后运行“kill -ABRT ”来生成测试 coredump 文件,并且文件以正确的文件名保存到 /coredumps。
当我的 postgres 崩溃时我可以在日志中看到:
资源限制禁用进程 3607766 (postmaster) 的核心转储。
用户 26 的进程 3607766(邮政局长)已转储核心。
我还注意到我的测试进程和 postgres 之间的“cat /proc/pid/limits”输出存在差异。测试进程将“最大核心文件大小”设置为“无限制”,将 postgresql 值设置为“0”