java之mybatis POOLED 数据源

你猜 阅读:61 2023-09-07 20:43:31 评论:0

我正在使用 myBatis POOLED datasource .以下是连接池配置 -

poolMaximumIdleConnections: 5 
poolMaximumActiveConnections: 20 

我用 102、742 请求(160 TPS) 访问了服务,并通过启用 mybatis 日志获得了以下指标-

No of Request: 102,742 
 
No of Created connection: 8,841 
No of Checked out connection: 93,901 
 
No of Returned connection: 93,911 
No of Closed connection: 8,831 
 
No of Claimed overdue connection: 0 
No of bad connection: 0 
  1. 如果池大小为 20,为什么会创建 8,841 个连接。它不应该只创建 20 个连接并从池中重用吗?
  2. 创建了 8,841 个连接,但仅关闭了 8,831 个。这是否意味着 10 个连接仍处于打开状态 - 连接泄漏?

请您参考如下方法:

如您在源代码中所见,“ checkout ”连接意味着如果有空闲池可用则从空闲池中取出它,请参见第 375 行。

如果没有可用的,代码会尝试“创建”一个(参见第 381 行)

所以, checkout 意味着“重复使用”,这就解释了“ checkout ”数。

当然,没有人会永远活着——即使是旧的联系也不会。因此,较旧的连接通常会在闲置一段时间后被终止,这意味着闲置池会缩小,如果需要,则需要新的连接。这会导致“已创建”连接的数量。

不,如果最后有 10 个人还活着,那就完全正常了。如您所见,有 10 个连接甚至还没有关闭,这通常意味着某些东西仍在使用它们。或者它可能是你这边的一个错误,很难说。


标签:MyBatis
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号