我使用的是一个开源应用程序(Maarch),在从旧版本迁移到更新版本之后,我遇到了postgresql问题。
有两个涉及pgsql的操作,它们使用100%的CPU并阻止应用程序。
我没有apache2错误,也没有pgsql错误。我现在正在阻止,因为我不知道在哪里可以搜索问题的根源。
服务器在debian 8下,PHP 7.0和POSTGRESQL 9.4
有什么想法吗?
答案 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秒。
如果上述内容无效,请分析正在执行的查询是否复杂,以及连接中的字段/正在运行的查询的哪些部分被编入索引。
或者通过分析运行真空可以帮助一点(持久的操作)。