Java DB使用过多的CPU-95%

Java DB使用过多的CPU-95%,java,database,hibernate,spring-mvc,db2,Java,Database,Hibernate,Spring Mvc,Db2,我在应用程序中使用SpringMVC+hibernate。应用服务器是IBMWebSphereV7。在重新启动应用程序时和重新启动应用程序后,Db2syscs进程使CPU使用率达到99%,占用内存约为1034352K。大约持续10~15分钟。我尝试增加分配给DB2的堆大小,这没有什么区别 编辑 这些是我在spring配置文件中的hibernate属性。添加缓存、池属性会产生任何影响吗 <prop key="hibernate.dialect">org.hibernate.dialec

我在应用程序中使用SpringMVC+hibernate。应用服务器是IBMWebSphereV7。在重新启动应用程序时和重新启动应用程序后,Db2syscs进程使CPU使用率达到99%,占用内存约为1034352K。大约持续10~15分钟。我尝试增加分配给DB2的堆大小,这没有什么区别

编辑

这些是我在spring配置文件中的hibernate属性。添加缓存、池属性会产生任何影响吗

<prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.connection.datasource">jdbc/logincfg</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory
</prop>
<prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WebSphereExtendedJTATransactionLookup
</prop>
org.hibernate.dial.DB2Dialect
真的
假的
jdbc/logincfg
org.hibernate.transaction.cmttTransactionFactory
org.hibernate.transaction.WebSphereExtendedJTATransactionLookup

如果您在linux上运行,请尝试使用诸如db2top之类的监视器来确定哪个查询正在搅动您的CPU

 db2top -d <your database name>   
db2top-d

WebSphere本身处理其数据源的所有池和缓存级别。所有与JDBC相关的配置都可以通过WebSphere管理控制台执行。尝试使用连接池数据源而不是XA数据源。同时检查服务器配置中的启发式危险。这些将减少CPU的负载。

数据库的大小是多少?对于一个大小合理的数据库来说,1GB的数据库服务器内存似乎相当贫乏。这可能是一个长查询问题吗?缺少一些索引或类似的东西?@Matthew Scharley:数据库没有这么大的大小。数据库中有9个表。@Alexandre Lavoie:我使用hibernate,所以手工编写的查询很少。当然可以,但hibernate不会在表中创建索引,对吗?(我从来没有使用Hibernate自己实际创建表)我使用Hibernate和MySQL并手动创建索引来优化连接和位置!我正在使用WindowsServer2003