Tomcat下配置连接池

Tomcat配置高效数据源连接池HikariCP指南 HikariCP在设计时注重性能和轻量级。其源码简单、易于理解,并且经过优化以减少CPU的使用率。HikariCP使用了大量现代Java技术,如Java 8的Optional、Lambda表达式以及并发集合等,使得它能够在并发环境下提供更好的性能。低内存占用:与其他连接池相比,HikariCP的内存占用较小,它不会创建大量的后台线程。高速连接获取:HikariCP提供了最快的连接获取和友好的重试机制。简单的配置:尽管功能强大,但HikariCP的配置却异常简单。 阅读详情

Tomcat下配置连接池

4.1连接池知识简介

总所周知建立数据库连接是一个非常耗时耗资源的行为,因此现代的Web中间件,无论是开源的Tomcat、 Jboss还是商业的websphere、weblogic都提供了数据库连接池功能,可以毫不夸张的说,数据库连接池性能的好坏,不同厂商对连接池有着 不同的实现,本文只介绍拜特公司使用较多的开源web中间件Tomcat中默认的连接池DBCP(DataBase connection pool)的使用。

4.2 Tomcat下配置连接池

 下面以tomcat5.5.26为例来介绍如何配置连接池

1:需要的jar

在tomcat的安装目录common\lib下有一个naming-factory-dbcp.jar,这个是tomcat修改后的dbcp连接池实现,同时为了能够正常运行,还需要commons-pool.jar。

 

2:建立context文件

 进入到conf\Catalina\localhost新建一个上下文文件,文件的名称既为将来要访问是输入url上下文名称,例如我们建立一个名为btweb的文件内容如下:

<Context debug="0"docBase="D:\v10_workspace\build\WebRoot"  reloadable="false">

   <Resource

   name="jdbc/btdb1"

  type="javax.sql.DataSource"

  factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

    username="v10"

    password="v10"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:cahs"

    maxActive="5"

    maxIdle="3"

    maxWait="5000"

    removeAbandoned="true"

removeAbandonedTimeout="60"

testOnBorrow="true"

    validationQuery="selectcount(*) from bt_user"

    logAbandoned="true"

       />

  </Context>

4.3参数分步介绍

u  数据库连接相关

username="v10"

   password="v10"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:cahs"

u  jndi相关

name="jdbc/btdb1"

  type="javax.sql.DataSource"

  factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

factory默认是org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory,tomcat也允许采用其他连接实现,不过默认使用dbcp。

u  连接数控制与连接归还策略

    maxActive="5" 

maxIdle="3" 

minIdle=”2”

    maxWait="5000"

u    应对网络不稳定的策略

testOnBorrow="true"

    validationQuery="selectcount(*) from bt_user"

u  应对连接泄漏的策略

    removeAbandoned="true"

removeAbandonedTimeout="60"

    logAbandoned="true"

  

如下图所示:连接池处于应用程序与数据库之间,一方面应用程序通过它来获取连接,归还连接,另一方面连接又需要从数据里获取连接,归还连接。

步骤1:系统启动

系统启动时,初始化连接池,由于没有任何请求连接池中连接数为0。

 

maxActive="5"

表 示并发情况下最大可从连接池中获取的连接数。如果数据库不是单独,供一个应用使用,通过设置maxActive参数可以避免某个应用无限制的获取连接对其 他应用造成影响,如果一个数据库只是用来支持一个应用那么maxActive理论上可以设置成该数据库可以支撑的最大连接数。maxActive只是表示 通过连接池可以并发的获取的最大连接数。

从图上我们可以看到连接的获取与释放是双向,当应用程序并发请求连接池时,连接池就需要从数据库获 取连接,那么但应用程序使用完连接并将连接归还给连接池时,连接池是否也同时将连接归还给数据库呢?很显然答案是否定的,如果那样的话连接池就变得多此一 举,不但不能提高性能,反而会降低性能,那么但应用成归还连接后,连接池如何处理呢?

maxIdle="3"

如果在并发时达到了maxActive=5,那么连接池就必须从数据库中获取5个连接来供应用程序使用,当应用程序关闭连接后,由于maxIdle=3,因此并不是所有的连接都会归还给数据库,将会有3个连接保持在连接池种中,状态为空闲。

minIdle=”2”

最小默认情况下并不生效,它的含义是当连接池中的连接少有minIdle,系统监控线程将启动补充功能,一般情况下我们并不启动补充线程。

问题:如何设置maxActive和maxIdle?

理 论上讲maxActive应该设置成应用的最大并发数,这样一来即便是在最大并发的情况下,应用依然能够从连接池中获取连接,但是困难时的是我们很难准确 估计到最大并发数,设置成最大并发数是一种最优的服务质量保证,事实上,如果某个用户登录提示系统繁忙,那么在他再次登录时,可能系统资源已经充足,对于 拜特资金管理系统我们建议将maxActive设置为系统注册人数的十分之一到二十分之一之间。例如系统的注册人数为1000,那么设置成50-100靠近100的数字,例如85或90。

 maxIdle对应的连接,实际上是连接池保持的长连接,这也是连接池发挥优势的部分,理论上讲保持较多的长连接,在应用请求时可以更快的响应,但是过多的连接保持,反而会消耗数据库大量的资源,因此maxIdle也并不是越大越好,同上例我们建议将 maxIdle设置成

50-100中靠近50的数字,例如55。这样就能在兼顾最大并发同时,保持较少的数据库连接,而且在绝大多情况,能够为应用程序提供最快的相应速度。

 

testOnBorrow="true"

validationQuery="selectcount(*) from bt_user"

我 们知道数据库连接从本质上架构在tcp/ip连接之上,一般情况下web服务器与数据库服务器都不在同一台物理机器上,而是通过网络进行连接,那么当建立 数据库连接池的机器与数据库服务器自己出现网络异常时,保持在连接池中的连接将失效,不能够在次使用,传统的情况下只能通过重新启动,再次建立连接,通过 设置以上两个参数,但应用程序从连接池中获取连接时,会首先进行活动性检测,当获取的连接是活动的时候才会给应用程序使用,如果连接失效,连接将释放该连 接。validationQuery是一条测试语句,没有实际意义,现实中,一般用一条最为简单的查询语句充当。

 

removeAbandoned="true"

removeAbandonedTimeout="60"

logAbandoned="true"

有时粗心的程序编写者在从连接池中获取连接使用后忘记了连接的关闭,这样连池的连接就会逐渐达到maxActive直至连接池无法提供服务。现代连接池一般提供一种“智能”的检查,但设置了removeAbandoned="true"时,当连接池连接数到达(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时便会启动连接回收,那种活动时间超过removeAbandonedTimeout="60"的连接将会被回收,同时如果logAbandoned="true"设置为true,程序在回收连接的同时会打印日志。removeAbandoned是连接池的高级功能,理论上这中配置不应该出现在实际的生产环境,因为有时应用程序执行长事务,可能这种情况下,会被连接池误回收,该种配置一般在程序测试阶段,为了定位连接泄漏的具体代码位置,被开启,生产环境中连接的关闭应该靠程序自己保证。


Tomcat连接池配置及优化实战指南 数据库连接池是一种资源池化技术,用于管理数据库连接的复用和缓存。在多用户应用中,频繁的开启和关闭数据库连接会消耗大量的系统资源和时间,影响系统的性能和响应速度。连接池通过预先建立一定数量的连接,并维护这些连接,可以显著减少数据库连接的创建和销毁次数。连接池中的关键参数包括::连接池启动时创建的连接数。maxActive:连接池中允许的最大连接数。maxIdle:连接池中最大的空闲连接数。minIdle:连接池中最小的空闲连接数。maxWait。 阅读详情

相关推荐

不用加速器!Google Earth Pro登录失败自救手册:从服务器连接到地图加载的完整排错流程

本文详细解析了Google Earth Pro登录失败的常见问题及解决方案,包括服务器连接失败、地图加载异常等。通过基础排查、内置修复工具使用和高级配置调整,帮助用户无需加速器即可解决启动问题、黑屏和转圈圈等困扰,提升软件使用体验。

weixin_29227425的博客 485

tomcat连接池的配置

     连接池的简单原理就是将数据库连接对象储存到集合中. 1.tomcat管理界面的配置,去官网找到tomcat管理包,将apache-tomcat-5.5.23-admin.zip解压,将解压后的目录拷贝到tomcat相应的目录下(把它copy到apache-tomcat-5.5.25/server/webapps/目录下) 2.   配置用户,编辑TOMCAT-HOME

武金剑的专栏 649

告别点不亮!STM32F103驱动HT1621段码屏的常见坑点与调试心得

本文详细解析了STM32F103驱动HT1621段码屏的五大常见问题及解决方案,包括硬件连接、时序控制、RAM地址映射等关键难点。通过实测数据和代码示例,帮助开发者快速排查显示异常问题,提升驱动开发效率。特别针对HT1621与STM32F103的兼容性问题提供了专业调试建议。

weixin_30925435的博客 380

Tomcat连接池配置

<br />Tomcat连接池配置,如此简易<br />         最近一个朋友,发了一个异常消息.给我看,说他的Tomcat6,配置数据源连接池。怎么的都不成功. 他说他在网上看了很多相关资料。那些资料都说可以配置成功.但是他照着资料详细配置的,还是不行.<br /> 下面是他发的异常:Java代码  严重: Servlet.service() for servlet jsp threw exception  org.apache.tomcat.dbcp.dbcp.SQLNestedExceptio

Thomastang2012的专栏 1073

对数周期天线hfss建模_Ansoft HFSS 在设计对数周期天线时的仿真方法-HFSS教程

AnsoftHFSS在设计对数周期天线时的仿真方法文章来源: ANSYS 2011中国用户大会优秀论文 录入: mweda.com 点击数:【摘要】 本文通过 ANSOFT HFSS 设计了一个对数周期天线,在仿真分析时,发现随着求解频率的不同,天线的求解结果差别较大,求解误差较大。通过在 HFSS 中尝试不同的求解设置方法, 最终通过将天线模型剖分网格最大长度限定在 1/50λ的...

weixin_42186728的博客 2102

el-table通过上下左右键移动光标

在Element Plus的el-table中包含el-input和el-select组件,要实现上下左右键控制光标位置,需要通过focus和blur跟踪判断当前是哪个el-input或el-select有焦点,当按键按下时,通过监听,计算下一个获取焦点元素的索引,通过focus方法将焦点切换至改元素。

秋思的博客 1350

关于TOMCAT配置多个连接池的问题

关于TOMCAT配置多个连接池 如果是TOMCAT5的话META-INF下的context.xml对这段进行修改      name="jdbc/aa"      type="javax.sql.DataSource"      driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"      password="123456"

蓝品的专栏 2169

AI计算,为什么要用GPU?

几年后,2012年,神经网络之父杰弗里·辛顿(Geoffrey Hinton)的两个学生——亚历克斯·克里切夫斯基(Alex Krizhevsky)、伊利亚·苏茨克沃(Ilya Sutskever),利用“深度学习+GPU”的方案,提出了深度神经网络AlexNet,将识别成功率从74%提升到85%,一举赢得Image Net挑战赛的冠军。根据形态,GPU可分为独立GPU(dGPU,discrete/dedicated GPU)和集成GPU(iGPU,integrated GPU),也就是常说的独显、集显。

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 1675

tomcat6,7配置连接池

以往Tomcat5.0的连接池配置是在http://localhost:8080/admin/下进行的非常方便,可是5.0以后的版本里面Tomcat就没有把admin集成到程序中了。 Tomcat5.5的admin可以在apache官方网站上下到,也可以通过admin里面的提示信息进行配置。   可是Tomcat6.0和7.0以后就没有admin管理界面了。这个时候配置连接池就必须手动配置了

一名系统架构师的征途 2677

代谢组数据分析(三十一):空间代谢组学分析从数据加载到通路分析的流程解析

空间代谢组学是一种先进的技术,能够在组织切片上以高分辨率检测代谢物分布,为理解生物代谢过程提供新视角。其分析流程包括数据获取、预处理、代谢物注释、差异表达分析、可视化、通路分析、聚类分析及空间相关代谢物分析等关键步骤。这些步骤帮助研究人员从海量数据中提取有价值信息,揭示代谢物的空间分布规律,发现潜在生物标志物,探索代谢通路调控机制。例如,SpaMTP等工具为全流程分析提供了强大支持,助力研究人员高效处理数据,深入理解代谢过程,为生物学研究和临床应用提供重要依据。

专注生信领域 921

回答网友提问:Word 里如何调用 DeepSeek API?

上面的 Visual Basic 定义了名叫 DeepSeekV3 的 subroutine,同理我们可以让 Trae 再写一个调用开启了 DeepThink(R1) 模式的 DeepSeek API,步骤类似,这里不再赘述。在 Word 的 File->Options 选项里,选择 Customize Ribbon,将 Developer 标签从左侧移到右侧,然后在 Developer 标签下新建一个 Group,随便起个名称。API 调用的 response,自动填充到了 Word 里。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 278

TOMCAT中连接池的配置

创建TOMCAT连接池的目的是在TOMCAT启动的时候可以产生足够多的数据库连接,并提供给程序使用 通过连接池,可以提高程序的运行速度,同时也节省内存,提高服务器的效率,能够支持更多的用户连接,连接的建立,断开 都有连接池来管理,当程序需要建立连接,只需要从内存中取一个来用,不用新建。 如何是连接池的配置,只需将其放在CONF/SERVER.XML文件中的&lt;host&gt;&lt;/h...

我的JAVA 182

YOLO+OpenClaw缺陷检测智能体 | 低代码工业质检自动化方案 | 含YOLO模型训练/智能体集成/任务全流程,支持离线日报/预警/趋势分析,解决实时性瓶颈问题(下篇)

某PCB板制造商需要对生产线上的PCB板进行缺陷检测,主要检测划痕、凹坑、污渍和裂纹等缺陷。原有人工检测方式效率仅为200件/小时,漏检率达5%,且检测人员长期工作易疲劳。

qq_36130719的博客 207

在TOMCAT上配置连接池

在TOMCAT上配置连接池一.配置数据源:使用TOMCAT提供的JNDI将数据源对象注册为一个命名服务,然后在系统中使用JNDI提供的接口按照名称查询得到对应的数据源。1.  安装DBCP(Database Connection Pool)数据源TOMCAT默认自带的三个JAR文件:(TOMCAT_HOME/common/lib目录下)Commons-dbcp-1.1.ja

echo 'narcissus' 2038

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

tomcat中连接池的配置

今天花了大半天的时间才把tomcat5.5.17下的连接池问题搞定。趁着思路还没被打断,把有些总结记录下来。 there is a datasourceProject,and there is a context file under %TOMCAT_HOME%/conf/Catalina/localhost/ ,where TOMCAT_HOME is the dirctory tomcat

teddylu的专栏 1393

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Tomcat配置SQLServer连接池

参考文章:http://jakarta.apache.org/tomcat/tomcat-5.5-doc/jndi-datasource-examples-howto.html配置TOMCAT5.5.X连接池  1.       进入tomcat目录下的conf文件夹目录里,找到Server.xml在tomcat的Server.xml文件中在标签与标签里,定议连接语句,格式如下定议你的应用程序的目

没有天赋的IT人 2053

Tomcat中数据库连接池的配置

 JSP中tomcat的SQL Server2000数据库连接池的配置环境:1. 数据库:Microsoft SQL Server 20002. 数据库驱动程序:net.sourceforge.jtds.jdbc.DriverJNDI(Java Naming and Directory Interface)概述:Tomcat4(5)提供了一个与Java Enterprise Edition应用

Darren的专栏 1587

配置tomcat下的连接池

    配置tomcat下的连接池说实话是个即简单又复杂的过程,我在配置过程中先后遇到了至少3种以上奇怪的错误,现总结经验,把配置过程总结如下:1、配置%tomcat_home%/conf/Catalina/localhost/xxx.xml文件,其中xx代表你的web应用目录,缺省是ROOT5.0.x              factory      org.apache.commons.db

ywb1973的专栏 1232

mysql,tomcat环境下jdbc连接池配置

首先先对tomcat中的一些配置文件进行修改 1、创建数据库shixun 2、配置server.xml文件。Tomcat安装目录下conf中server.xml文件。 <Resource name="jdbc/DBPool" type="javax.sql.DataSource" password="" drive

Tro_picana的专栏 1348

配置Tomcat的连接池

配置Tomcat 4.1.29的连接池Tomcat 4.1.29是目前的最高稳定版本,下面介绍一下它的连接池配置方法。1)    连接池配置(Database Connection Pool (DBCP) Configurations)DBCP使用的是Jakarta-Commons Database Connection Pool 要使用连接池需要如下的组件即jar文件。Jakarta-Commo

飞鸟Blog 1764

在 Spring Boot 上配置 Tomcat 连接池

Spring-Boot 支持 HikariCP(默认)、tomcat-jdbc 和 Commons DBCP 作为数据库的连接池。但是,每个池都使用一组不同的属性。在本教程中,我们将学习如何配置 Tomcat 连接池。 配置 Tomcat JDBC 连接池 首先,要配置 Tomcat 连接池,您需要在application.properties文件的“spring.datasource.tomcat”命名空间中添加属性。这是一个例子: spring.datasource.tomca..

allway2的博客 4104

配置tomcat连接池

 配置tomcat连接池step 1.将ojdbc14.jar拷到lib中.个人喜欢放在工程的lib中,而不是conf/lib.step 2.将下面内容写入conf/server.xml文件中,或WebRoot/META-INF/context.xml的中,个人倾向于后者,省得影响到别的项目.我只写了基本的配置内容,只以此作为参照,需要特别注意下述所有内容是在一个标签中的,切不可写成.....

my zone 708

Tomcat 数据库连接池配置

 Tomcat 数据库连接池配置(各种版本) Tomcat 数据库连接池配置 前言 :   1  准备 mysql 的 jdbc 驱动程序   2  安装 Tomcat 默认全部装在 D:/Server/tomcat5.0 D:/Server/tomcat5.5 D:/Server/tomcat6.0   3  以 TOMCAT_HOME 代替个版本的安装目录 4   

wanghongyiwhy的专栏 1011

连接池配置 - tomcat7

commons-dbcp连接池,还有其它可以选择的方案,如c3p0,bonecp等,与这些连接池实现相比,Tomcat jdbc pool更突出的功能体现在: 支持多核系统,提供更好的高并发性能。 接口动态实现,运行时环境支持java.sql和javax.sql接口,可以使用低版本JDK编译。 无需每次使用连接时都验证连接,可以在获取或返回连接时验证,不用比设置的间隔时间更频繁。 当数据库连接建立时,一个可设置的查询将运行一次。这对保持连接建立整个时间中的会话十分有用。

没有成就的三十岁 3957
上一篇: IE的相关问题整理
下一篇: 利用Java Compiler API 来编译
zxycode007
博客等级 码龄18年 53粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值