【发布时间】:2014-12-18 07:59:42
【问题描述】:
我有一个在连接到 MySQL 5.5 的 Tomcat7 上运行的 Web 应用程序。
我有两台服务器运行相同的代码:
Ubuntu
红帽
Ubuntu 运行良好,保持稳定的 8-16 个连接,但 Red Hat 泄漏连接并且连接数增加,从未下降。服务器最终会重置 ~152 个连接。
关闭连接的代码被调用:
try {
conn.close();
} catch (SQLException e) {
exceptionController.logException(this.getClass().getSimpleName(), "finalize Db", e.getMessage(), false);
}finally{
conn = null;
}
所有到 MySQL 的连接都来自这个应用程序。
为什么会有不同的行为? 是否有我应该考虑的配置设置 - 例如关闭睡眠连接设置?
Ubuntu 服务器状态:
红帽服务器状态:
连接列表的部分屏幕:
我发现了这个post,它似乎降低了 o/s 连接速度,但它们仍在慢慢上升。
编辑
研究表明连接未正确关闭。为什么连接会在一种环境中关闭,而在另一种环境中却没有?
我使用以下设置编辑了my.cnf:
wait_timeout=30
但是,客户端连接正在休眠并且永远不会被终止。服务器已使用新设置重新启动。
我不明白什么?
【问题讨论】:
-
show full processlist显示什么 -
@exussum - 你能解释一下吗?你的意思是客户端连接列表?如果是这样,所有连接都来自两台服务器上的网络应用程序。
-
它将显示建立连接的原因以及它们上发生的情况。在 mysql 中运行它
-
@exussum 他们在睡觉。
-
@meda 是的 - 真的很酷 - 可以在服务器状态下找到。
标签: java mysql jdbc connection