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

Apache DBCP2连接池在Tomcat启动时打开的MYSQL连接比maxTotal多

袁青青
2023-03-14

我已经在ApacheTomcat8.5中配置了ApacheDBCP2JNDI数据源。16.上下文中的我的资源标记。xml如下所示。

<Resource auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/mydb?autoReconnect=true&amp;useSSL=false"
    username="root"
    password="mypassword"
    name="jdbc/myDS"
    initialSize="5"
    minIdle="5" 
    maxIdle="10"
    maxTotal="20"
    testOnCreate="true"
    testOnBorrow="true" 
    testOnReturn="true"
    testWhileIdle="true"
    validationQuery="SELECT 1 from dual"
    validationQueryTimeout="60"
    timeBetweenEvictionRunsMillis="180000"
    numTestsPerEvictionRun="10"
    softMinEvictableIdleTimeMillis="150000"
    maxConnLifetimeMillis="300000"
    logAbandoned="true"
    removeAbandonedOnBorrow="true"
    removeAbandonedOnMaintenance="true" 
    removeAbandonedTimeout="60"
    maxWaitMillis="60000" />

我的问题是:

  1. 我启动了tomcat(我还没有在tomcat上部署任何应用程序)。我打开MYSQL客户端,以root身份登录。现在,当我运行显示进程列表命令时,我看到31个连接。1个来自MYSQL客户端,30个来自tomcat。为什么当我的maxTotal为20时,DBCP2已经获得了30个连接?不,除了tomcat和MYSQL客户端,还有一个在使用MYSQL。
  2. 因为我还没有在tomcat上部署任何应用程序来使用JNDI数据源,所以我从DBCP2的所有连接都是空闲的。
  3. 当我删除minIdle="5"。然后在180000毫升之后,所有30个MYSQL连接从连接池中删除,连接池大小变为零。

帮助我理解这种行为。谢谢是预付款。

共有1个答案

汪才
2023-03-14

对不起大家。这是我理解上的错误。Tomcat 8.5。我正在使用的16在webapps目录中已经有6个应用程序(ROOT、docs、examples、host manager、manager等)。因为,我在上下文中创建了ApacheDBCP2JNDI数据源。xml在tomcat的conf目录中,tomcat为webapps目录中的每个应用程序创建了6个连接池,其initialSize=“5”。我需要重新访问我的JNDI数据源配置,以便将其限制为1个应用程序使用<谢谢大家路过。

 类似资料:
  • 我们有一个spring-boot应用程序,它使用嵌入式tomcat进行部署,并使用MySQL后端的默认tomcat-jdbc连接池,而没有为MySQL或tomcat端定制。 该应用程序有一些调度程序,它们主要在一天中的特定时间运行,即在昨天的最后一次cron运行和今天的第一次cron运行之间,有超过9个小时的间隙。然而,无论何时cron在早期运行,它都从未遇到过空闲连接问题。 现在我们看到一条错误

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

  • 我正在EclipseJuno中开发一个JavaEEWeb应用程序。我已经将Tomcat配置为使用JDBC连接池(org.apache.Tomcat.JDBC.pool)和PostgreSQL数据库。以下是我的项目META-INF/context中的配置。xml: 我的应用程序使用Eclipse部署到Tomcat,在Tomcat的context.xml属性reloadable设置为"true",以便

  • 问题内容: 我正在Eclipse Juno中开发JavaEEWeb应用程序。我已将Tomcat配置为与PostgreSQL数据库一起使用JDBC连接池(org.apache.tomcat.jdbc.pool)。这是我的项目的META-INF / context.xml中的配置: 我的应用程序是使用Eclipse部署到Tomcat的,并且在Tomcat的context.xml中,可重载属性设置为“

  • 我正在Eclipse Juno中开发一个Java EE web应用程序。我已经将Tomcat配置为使用JDBC连接池(org.apache.Tomcat.JDBC.pool)和PostgreSQL数据库。以下是我项目的META-INF/context.xml中的配置: 我的应用程序使用Eclipse部署到Tomcat,在Tomcat的context.xml中,一个属性reloadable被设置为“

  • 嘿,我正在使用Glassfish开源v4,我遇到了一个奇怪的问题。 我在管理控制台中定义了到Oracle 11g的JDBC连接池,并设置了: 初始和最小池大小:500 最大游泳池大小:1000 池大小调整数量::750 我已经为这个连接池创建了一个特定的用户。然而,有时当我检查数据库中打开的连接时,我发现有1000多个连接(我看到的最大连接数是1440个) 当发生这种情况时,任何查询尝试都会失败,