我正在GlassFish 4.0下监控JDBC连接池,并且发现了' numconnused'监视器报告的内容总是远高于MySQL通过SHOW PROCESSLIST报告的打开连接数。例如,MySQL将报告约25个开放连接,但GlassFish表示有超过50个“numconnused”#39;在线文档。告诉我,这些价值在任何特定时刻应该大致相同。关于为什么这两个值应该大开关的任何想法?
答案 0 :(得分:2)
我找到了这个页面:Making datasource in Glassfish
“ConnectionPoolDataSource用于访问PooledConnection,它通过JDBC驱动程序实现本机池。在这种情况下,应用程序服务器可以使用此本机接口实现连接池。“
“DataSource:DataSource对象是Connection对象的工厂。使用简单的DataSource时,appserver使用自己的池而不是本机池。“
我们使用的是ConnectionPoolDataSource,它使用MySQL JDBC驱动程序决定用于其池实现的任何内容。 鉴于我们只将驱动程序配置为连接到数据库所需的最小值,这可能会留下不正确配置的“池化”方面。
这可能会解释我在GlassFish报告的'numconnused'连接数与MySQL报告的实际开放连接数之间的差异。
我已经更改池以使用DataSource,现在我看到'numconnused'连接的数量与MySQL报告的数量相近(没有睡眠时间或睡眠时间低的连接)。