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

tomcat 7中的连接池

壤驷安和
2023-03-14

这是我目前的配置

 <Resource
    name="jdbc/data"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/TABLE_NAME"
    username="USER_NAME"
    password="PASSWORD" 
    initialSize="10"
    maxActive="50"
    suspectTimeout="120"
    minIdle="10"
    maxIdle="20"
    maxWait="1000"
    testOnBorrow="true"
    timeBetweenEvictionRunsMillis="30000"
    minEvictableIdleTimeMillis="60000"
    validationQuery="SELECT 1 FROM DUAL"
    validationInterval="40"
    removeAbandoned="true"
    removeAbandonedTimeout="100"
/>

这是在全局上下文中,因此多个应用程序可以使用它。我对parameters.need一些细节有点困惑。我理解的是

initalSize池启动时创建的连接数。

maxActive一次最多可以激活50个连接。

minIdle10个连接在未使用连接时保持空闲,其他连接在maxwait

maxIdle20个连接可以存储为空闲。

但当我启动tomcat服务器时,我可以看到30个空闲连接,这些连接将永远存在。为什么会这样?我错过什么了吗?根据我对连接池的理解,应该只创建10个连接,并且可以保持空闲模式。mysqlmy有什么具体的改变吗。cnf

共有1个答案

龚永新
2023-03-14

当你说...

这是在全球范围内,因此多个应用程序可以使用它。

你具体是什么意思?是在$CATALINA_BASE/conf/server中。GlobalNamingResources块或$CATALINA_BASE/conf/context中的xml。xml?

在$CATALINA_BASE/conf/server.xml的GlobalNamingResources块中定义资源标记将导致在整个服务器上只创建一个资源。然后,可以通过将ResourceLink标记添加到上下文配置来将其共享给部署在系统上的应用程序。

在$CATALINA_BASE/conf/context中定义资源。xml将为部署到Tomcat实例的每个应用程序定义一次资源。因此,如果部署了三个应用程序,那么最终将得到三个独立的资源。这是一个猜测,但可能是您看到30个数据库服务器连接的原因。

 类似资料:
  • MyService.Event将响应提供给“My DaemonThread”(它保存引用并每5秒写入一次响应)。exits方法。 'My daemonthread'使用“synchronized(this){this.wait(5000);}”来表示等待(最初使用thread.sleep(),但为了使其正常工作,我将其改为wait()) 连接2->已启动,但没有线程调用MyService.Even

  • 问题内容: 我遵循了一些教程,以便使用spring,hibernate模式在tomcat上运行来设置Web应用程序。 尝试运行我的应用程序时,出现错误“未设置’hibernate.dialect’时连接不能为空” 我的hibernate.cfg.xml是 我的pom.xml user-servlet.xml 关于为什么我会收到此错误的任何建议将不胜感激。 丽莎 问题答案: 您提到的教程中的一段代码

  • 问题内容: 目前,我们正在使用带有8gb RAM的4个cpu窗口框,并在同一框上安装了MySQL5.x。我们正在为应用程序使用Weblogic应用程序服务器。我们的应用程序目标是200个并发用户(显然不是同一模块/屏幕)。那么,我们应该在连接池中配置的最佳连接数是多少(最小和最大数)(我们正在使用weblogic AS的连接池机制)? 问题答案: 这个问题有一个非常简单的答案: 连接池中的连接数应

  • 我正在使用hikaricp(这可能也适用于任何其他数据库连接池)。我有一个DBPool类,在其中我实例化了一个HikariDataSource(使用HikariConfig对象)。对于这个DBPool,我使用lazyholder习惯用法来限制每个VM一个池实例。但是,一旦获得对池的引用,就可以检索连接对象(无需任何进一步的锁/同步/信号量检查),因为我认为连接池会处理我的连接对象限制。每次通过数据

  • 我有一个在Tomcat7上运行的web应用程序的问题。 当我尝试重新启动web应用程序时,我在servlet内部创建的线程打开的端口仍然是打开的。 “http-bio-8080-acceptor-0”后台进程prio=10 tid=0x00007F4ED4206000 nid=0x71f0 runnable[0x00007F4ECC78F000]java.lang.thread.state:run

  • 我们刚刚从dbcp迁移到tomcat jdbc连池。我们在加载中尝试了系统,收到了以下异常: 请注意: 不忙的连接在哪里?忙的数字在这之后一直在下降,但我们仍然没有得到任何连接。 有什么想法吗? 配置: env:ubuntu和tomcat 6. db-mysql