在并发环境中调试数据库连接泄漏

时间:2014-09-16 08:50:05

标签: java sql-server connection database-connection database-concurrency

我目前正在开发一个最初不是为高负载而构建的项目。

我的问题是,在压力测试期间的某个时刻(30个用户),应用程序似乎“卡住了”,当它发布时它会吐出很多异常。 Unable to get managed connection for [MY_DS]

当我只运行一个用户时,它就像一个魅力,因此它与并发性有关。 我还检查了在一次运行结束时是否有任何未闭合的数据库连接,并且没有,所以在正常使用情况下,没有连接泄漏。

我怀疑我的开放和关闭方法(因为它们是静态的)。以下是方法:

public static Connection getConnection() {
    if (logger.isDebugEnabled()) logger.debugLog("getConnection()");
    try {
        return DSUtils.getDefaultDataSource().getConnection();
    } catch (SQLException se) {
        logger.errorLog("SQLException", se);
        throw new ApplicationRuntimeException(MessageCodesConstants.ERROR_SQL_EXCEPTION, se);
    }
}

public static void closeConnection(Connection con) {
    if (logger.isDebugEnabled()) logger.debugLog("closeConnection");
    try {
        if (con != null) {
            con.close();
        }
    } catch (SQLException se) {
        logger.warnLog("SQLException while closing connection");
    }
}

这是一个在SQL Server 2008备份的JBoss EAP 6.2.0上运行的EE应用程序。

有人能指出我正确的方向找出解决方案的位置吗?

0 个答案:

没有答案