我目前正在从事一个最初不是为高负载而构建的项目。
我的问题是,在压力测试(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 应用程序。
有人可以指出我正确的方向以找出可以找到解决方案的地方吗?