Postgresql 服务在 Ubuntu 服务器中自行停止

Postgresql 服务在 Ubuntu 服务器中自行停止

在postgresql日志文件中,我发现消息:

startup process (PID 1886772) was terminated by signal 9: Killed

虽然重新启动服务后,postgresql 数据库开始正常运行。但是,连续两天,服务因上述错误停止了三次。我试图查看 OOM 是否是罪魁祸首,但在日志文件dmesg中找不到任何条目。kern.log

最后重新启动了数据库服务器。我不知道它是否能正常工作。我需要知道这个问题的原因,从而找到解决办法。

答案1

当您看到一条terminated by signal 9消息时,这意味着服务器内存不足,必须做出决定:终止消耗所有内存的应用程序或完全崩溃。如果有机会,大多数服务器操作系统都会选择继续运行。

出现此错误后您应该立即看到如下内容:

DETAIL:  Failed process was running: SELECT {rest of SQL query}

这将让你具体了解哪个SQL 查询是导致问题的原因,或者只是促成了问题。由于最近多次发生这种情况,这可能是 SQL 查询试图执行过多操作以超出可用资源范围的结果。

最终,您面前有三个选择:

  1. 重写导致服务器崩溃的 SQL 查询。⇢
    我从事数据库工作已有 25 年以上。95% 的性能问题都是由人(或 ORM)而不是服务器造成的。
  2. 添加一些交换空间,给系统一点喘息的空间。⇢
    这通常是一个不错的暂时的如果服务器是您本地拥有的,并且您需要一点时间来研究内存问题的最佳解决方案。
  3. 添加更多 RAM。⇢
    如果您使用的是云实例,那么这意味着要升级到下一层。如果您使用的是本地硬件,请尽可能多地安装。高性能数据库才是快乐的数据库。

相关内容