当前位置: 首页 > 知识库问答 >
问题:

DBCP2 BasicDataSource空闲连接未被清除

西门飞星
2023-03-14

initialSize-10 maxtotal-20 maxidle-10 minidle-0 minEvictableIdleTimeMillis-30min numTestsPerEvictionRun-60min numTestsPerEvictionRun-20 testonborrow-true testwhileidle-true validationquery-从dual中选择1

从提供的各种来源来看,以下是我对到Datasource的MaxTotal-MaxActive连接的理解,在上述情况下为20

MaxIdle-可以保留在池中的空闲连接数。这些由扫地机清除。在上述情况下,如果连接保持空闲30min,则连接为空闲。如果扫描器每60min运行一次,则检查20个空闲连接并清除空闲连接。超过此值的空闲连接将立即关闭。

上述认识是否正确?

我正在使用BasicDataSourceMXBean打印统计数据

{“NumActive”:“0”,“NumIdle”:“10”,“IsClosed”:“False”,“MaxTotal”:“20”,“MaxIdle”:“10”,“MinIdle”:“0”}

早些时候,空闲连接被清除。但是由于升级,空闲连接没有被清除。

共有1个答案

江永安
2023-03-14

在我看到的任何地方,属性似乎都应该是TestWhileIdle而不是TestOnIdle。该设置默认为false,因此您的空闲线程不会被测试有效性,因此不会被驱逐。

minidle基本上告诉连接池允许多少空闲线程。我从文档中了解到,当minidle0时,不应该有空闲连接。

通常,minidle默认为与initialsize相同的值。

 类似资料:
  • null 如果我理解正确的话,我们应该在启动时有1个空闲连接,根据负载从0到3,对吗? 正在发生的情况是:启动时1个连接,如果负载较低,最多3个空闲连接,高负载后超过3个空闲连接。然后这些连接不会立即关闭,我们不知道它们何时/是否会关闭(有时它们中的一些会关闭)。 所以问题是:这种行为正常吗? DAO子类的使用示例:

  • 我的JAVA应用程序使用多线程一次处理多个请求。因此,不同的请求在同一时间用不同的线程进行处理。 如果我观察数据库中打开的会话,有10个打开的会话(在c3p0中配置的最大数量),但它们都是空闲的。有没有一种方法可以让c3p0释放一些空闲连接,这样,至少有一个线程结束它的进程(增加最大连接数)?

  • 我对HikariCP很陌生,我遇到了一个问题。我有一个使用hikaridaTasource从数据库获取连接的方法: 但是,当我检查pgAdmin(这是一个PostgreSQL db btw)时,我看到它没有使用空闲连接,而是创建了一堆新连接。我怎么才能修好这个? 您可以看到,在第一个图像中有19个连接,其中18个是空闲的。但是,在查询之后,会有一堆新的连接,其中大多数是空闲的。我配置Hikari错

  • 问题内容: 我看到许多连接处于打开状态,并且很长一段时间(例如5分钟)保持空闲状态。 有什么解决方案可以在不重新启动mysql服务的情况下从服务器终止/关闭它? 我正在维护旧的PHP系统,无法关闭为执行查询而建立的连接。 我应该将my.cnf文件中的超时值减少为默认的8小时吗? 问题答案: 手动清理: 您可以杀死该进程ID。 但: php应用程序可能会报告错误(或网络服务器,请检查错误日志) 不要

  • 检测空闲连接和超时是为了及时释放资源。常见的方法发送消息用于测试一个不活跃的连接来,通常称为“心跳”,到远端来确定它是否还活着。(一个更激进的方法是简单地断开那些指定的时间间隔的不活跃的连接)。 处理空闲连接是一项常见的任务,Netty 提供了几个 ChannelHandler 实现此目的。表8.4概述。 Table 8.4 ChannelHandlers for idle connections

  • 在spring boot jpa中,如果我使用hikaricp池配置,其中我已将空闲超时设置为5分钟,最大生存时间设置为2分钟,并且我已将jpa的ddl auto属性设置为create drop,那么如果创建表的连接空闲7分钟,将在db中删除表?