POSTRESQL查询使用100%CPU

时间:2017-10-30 10:29:01

标签: apache postgresql

我使用的是一个开源应用程序(Maarch),在从旧版本迁移到更新版本之后,我遇到了postgresql问题。

有两个涉及pgsql的操作,它们使用100%的CPU并阻止应用程序。

我没有apache2错误,也没有pgsql错误。我现在正在阻止,因为我不知道在哪里可以搜索问题的根源。

服务器在debian 8下,PHP 7.0和POSTGRESQL 9.4

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

请考虑:

  • 启用所有语句的记录,例如http://cheng.logdown.com/posts/2016/04/08/enable-logging-in-postgresql 请注意,上面提到的将减慢应用程序,可能会吃很多日志的硬盘。请浏览/ grep日志。

  • 执行几次select * from pg_stat_activity这将让您知道哪些查询正在运行。

  • 执行select * from pg_stat_user_tables搜索last_vacuum或autovac日期 - 如果与您的减速日期相关,则问题解决了。

  • 执行SELECT now() - query_start, usename, datname, waiting, state, query FROM pg_stat_activity WHERE now() - query_start > '5 seconds'::interval ORDER BY 1 DESC;以确定持久查询(超过5秒。

如果上述内容无效,请分析正在执行的查询是否复杂,以及连接中的字段/正在运行的查询的哪些部分被编入索引。

或者通过分析运行真空可以帮助一点(持久的操作)。