我们有一个带有Hibernate 4.3的Java EE应用程序(一个在线数字图书馆门户),它连接到一个PostGres 9.2数据库。 在负载175个并发用户的login和访问系统负载testing时,数据库服务器CPU利用率上升到100%,并保持这种状态。
数据库服务器的硬件是:4核心Pentium 2+ GHz处理器。 12 GB RAM Ubuntu连接池大小为200.应用程序服务器是运行在不同的4核心Pentium 2+ GHz处理器上的Apache Tomcat 6.x。 12 GB RAM的Ubuntu机器。
请帮忙! 急需解决这个问题。
我遇到了类似的问题。 原因是 – 有些交易长期以来一直停滞不前。 因此CPU利用率提高到100%。 以下命令有助于找出运行时间最长的连接:
SELECT max(now() - xact_start) FROM pg_stat_activity WHERE state IN ('idle in transaction', 'active');
该命令显示连接运行的时间。 这个时间不应该超过一个小时。 所以杀掉了长时间的连接或者任何一点卡住的连接,都为我工作。 我跟着这个post来监测和解决我的问题。 Post包含了很多有用的命令来监视这种情况。
你有一个DBA?
他可以回答关于数据库定期维护的问题,例如表格分析频率,数据库的足够内存吗?
你能find影响数据库CPU的查询吗?
现在有一些方法可以帮助您不使用硬件扩展,例如: