Postgres 的 CPU 使用率突然飙升至 100%,然后又恢复正常

Postgres 的 CPU 使用率突然飙升至 100%,然后又恢复正常

我在 Ubuntu 16.04 上使用 postgreSQL 9.5

大约一小时前,我发现我的网站速度非常慢,无法使用。我检查了我的 DigitalOcean 控制台,发现 CPU 使用率跃升至 100%。当我top在控制台中运行时,发现罪魁祸首是 postgres。

我进行了一些故障排除,但还是没能找出问题所在。所以我决定关闭服务器,看看 CPU 使用率是否下降。关闭服务器 5 分钟后,CPU 使用率终于从 100% 降至 0%。

重启服务器后,网站又出现了同样的问题,无法使用。我当时都快哭了,但服务器重启 2 分钟后,我什么也没做,一切突然恢复正常了。

30分钟的痛苦

那么这是什么原因造成的?我以前也遇到过类似的问题,postgres 会导致流量激增,导致网站无法使用,但一小时后就会自行修复

编辑:它又恢复到 100%。

答案1

最有可能是 SQL 查询使用了过多的资源或检索了大量的数据(交换到临时文件)。要检查,您可以启用log_min_duration_statement设置使服务器记录超出查询执行的指定持续时间。为此,只需在 postgresql.conf 文件中添加(或取消注释)此参数,并设置适当的持续时间(2 秒是一个好的开始),然后重新加载(无需重新启动)。下次出现问题时,请检查日志文件内容。如果是这个问题,您将找到错误请求的文本,甚至它们运行的​​频率。

更多详细信息(见18.8.2. 何时记录):PostgreSQL 9.5 文档

相关内容