无法打开 JDBC 连接,在负载测试期间无法获取 java 的托管连接

问题描述 投票:0回答:3

在多个用户的负载测试期间注意到以下错误,但在单个 SOAP 请求的情况下则没有。

无法打开事务的 JDBC 连接;嵌套异常是 java.sql.SQLException: javax.resource.ResourceException: IJ000453: 无法获取 java 的托管连接:

jboss performance-testing database-testing
3个回答
3
投票

这可能是由于以下任一原因造成的:

  1. 数据源连接池尚未针对应用程序的最大负载进行正确调整(例如 max-pool-size 和blocking-timeout-millis)。
  2. 应用程序正在泄漏连接,因为它没有关闭连接并将它们返回到池中。
  3. 与数据库连接的线程挂起并保持连接。

确保相应数据源的

min-pool-size
max-pool-size
值根据
application load testing
设置,并且连接在应用程序代码内使用后关闭。


0
投票

您很可能已经在应用程序中发现了瓶颈,它似乎无法处理那么多虚拟用户。最简单的解决方案是在错误跟踪系统中提出问题并让开发人员进行调查。

如果您需要提供失败的根本原因,我至少可以想到两个原因:

  1. 您的应用程序或应用程序服务器配置不适合高负载(即,您的 JBOSS JDBC Connection 池配置中的连接数低于给定您正在模拟的虚拟用户数所需的数量。尝试修改
    min-pool-size
    max-pool-size
    与虚拟用户数量相匹配的值
  2. 您的数据库已超载,因此无法接受那么多查询。在这种情况下,您可以考虑单独对数据库进行负载测试(即直接通过 JMeter 的 JDBC Request 采样器向数据库发出请求,而无需访问应用程序的 SOAP 端点。)请参阅 使用 JMeter 构建数据库测试计划的真正秘密文章了解有关数据库负载测试概念的更多信息。

0
投票

最近,我遇到了同样的问题,在connectionFactory中添加配置useInboundSession后解决了。

DEBUG o.h.e.j.s.SqlExceptionHelper [默认任务 36] 无法清除警告 java.sql.SQLException:IJ031070:事务无法继续:STATUS_ROLLEDBACK 在 org.jboss.jca.adapters.jdbc.WrapperDataSource.checkTransactionActive(WrapperDataSource.java:272) 在 org.jboss.jca.adapters.jdbc.WrappedConnection.checkTransactionActive(WrappedConnection.java:2005) 在 org.jboss.jca.adapters.jdbc.WrappedConnection.checkStatus(WrappedConnection.java:2020) 在 org.jboss.jca.adapters.jdbc.WrappedConnection.checkTransaction(WrappedConnection.java:1994) 在 org.jboss.jca.adapters.jdbc.WrappedConnection.clearWarnings(WrappedConnection.java:1153) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.handleAndClearWarnings(SqlExceptionHelper.java:299) 在org.hibernate.engine.jdbc.spi.SqlExceptionHelper.logAndClearWarnings(SqlExceptionHelper.java:269) 在org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.releaseConnection(LogicalConnectionManagedImpl.java:194) 在org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.close(LogicalConnectionManagedImpl.java:239) 在org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.close(JdbcCoordinatorImpl.java:175) 在org.hibernate.internal.AbstractSharedSessionContract.close(AbstractSharedSessionContract.java:327)

© www.soinside.com 2019 - 2024. All rights reserved.