PostgreSQL 9.2 导致 CPU 利用率达到 100%

PostgreSQL 9.2 导致 CPU 利用率达到 100%

我们有一个 Java EE 应用程序(在线数字图书馆门户),其中安装了 Hibernate 4.3,连接到 PostGres 9.2 数据库。在负载测试中,当有 175 个并发用户登录并访问系统时,数据库服务器 CPU 利用率上升到 100% 并保持这种状态。

数据库服务器的硬件为:4 核 Pentium 2+ GHz 处理器。12 GB RAM Ubuntu 连接池大小为 200。应用程序服务器是 Apache Tomcat 6.x,运行在另一个 4 核 Pentium 2+ GHz 处理器上。12 GB RAM Ubuntu 机器。

请帮忙!需要紧急修复此问题。

答案1

我遇到了类似的问题。原因是 - 一些事务卡住了并且运行了很长时间。因此 CPU 利用率上升到 100%。以下命令有助于找出运行时间最长的连接:

SELECT max(now() - xact_start) FROM pg_stat_activity
                           WHERE state IN ('idle in transaction', 'active');

此命令显示连接运行的时间。此时间不应超过一小时。因此,终止运行时间较长或卡在任何时候的连接对我来说是有效的。我按照这篇文章来监控和解决我的问题。邮政包括许多有用的命令来监控这种情况。

答案2

您有 DBA 吗?

他能回答有关数据库定期维护的问题吗,例如表的分析频率、数据库是否有足够的内存?

您能找到影响数据库 CPU 的查询吗?

有一些方法可以在没有硬件扩展的情况下帮助您,例如:

  1. 足够的内存管理-这取决于您的数据库配置/负载
  2. 适当的索引可以避免全表扫描 - 您必须对查询进行研究
  3. 定期表/索引分析-DBA必须定期进行配置
  4. 通用应用数据库架构——这是一种个性化方法

相关内容