我有一个在Postgres数据库上运行的应用程序,有时当我有大约8-10个人在使用该应用程序时,CPU使用率飙升到99-100%之间,该应用程序是基于Codeigniter框架构建的,我相信每次不需要时都会关闭与数据库的连接,可以解决这个问题。我将不胜感激任何建议。谢谢
基本上,人们对应用程序所做的是运行插入查询,但速度非常快,一个人可以在一分钟内运行70到90个插入查询。
答案 0 :(得分:11)
我遇到了类似的问题。原因是 - 一些交易长期以来一直停滞不前。因此,CPU利用率增加到100%。以下命令有助于找出运行时间最长的连接:
SELECT max(now() - xact_start) FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active');
此命令显示自连接运行以来的时间。这个时间不应该超过一个小时。因此,杀死长时间运行或在任何时候停留的连接,对我有用。我跟着this帖子进行监控并解决了我的问题。 Post包含许多有用的命令来监控这种情况。
答案 1 :(得分:3)
您需要了解PostgreSQL正在做什么。相关资源:
找到慢速或最常见的查询后,use EXPLAIN确保它们正在有效执行。