Tomcat6优化
- 格式:docx
- 大小:198.23 KB
- 文档页数:13
tomcat常见的错误与解决⽅案⼩结⼀、tomcat启动时错误问题1:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program;解决:没有在tomcat的配置⽂件.bash_profile中设置环境变量JAVA_HOME,具体设置⽅法为:加⼊如下⼏⾏:JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具体值要以实际的jdk安装路径为准)export JAVA_HOMECLASSPATH=/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/lib/dt.jarexport CLASSPATH问题2:Error occurred during initialization of VM Could not reserve enough space for object heap解决:在tomcat的bin⽬录下,catalina.sh⽂件的tomcat内存参数配置过⼤,超过机器可⽤内存总数造成,修改到适当的值即可,修改的参数为:JAVA_OPTS="-Xms50m -Xmx60m"问题3:tomcat启动时报某个⽬录没有权限,启动失败,或者不能执⾏某些jsp页解决:tomcat需要tomcat⽤户具有⼀些⽬录和⽂件的相应权限, 所有⽬录应该具有读写执⾏(浏览)的权限,jsp,class⽂件应该最少具有读权限, ⼀些⽂件需要写权限,下⾯是已知的需要读写权限⽂件的列表:$CATALINA_HOME/logs下所有⽂件$CATALINA_HOME/work下所有⽂件$CATALINA_HOME/publish/main/count.txt⽂件$CATALINA_HOME/publish/chatroom/resource下的所有.xml⽂件所有上传图⽚⽬录都需要写权限。
引2.系统异常宕机分析步骤2.1.简述本章节适用于有一定周期性发生的系统异常宕机情况。
从以下组件/系统分析可能引起宕机:应用程序、数据库、硬件/网络、操作系统、其它2.1.1.必要的前置条件有最近一段时间的系统运行时的性能情况。
性能情况包括如下信息点:系统运行时的负载内存占用情况CPU占用情况磁盘空闲空间因此要编写相应的性能监控脚本来记录系统运行时的性能情况。
性能监控脚本应满足如下要求:执行监控脚本的周期为分钟级(在不影响系统整体性能的前提下)。
比如每1分钟执行一次脚本,以便记录当前系统的性能情况。
监控脚本要将当前系统情况的信息保存到文件中,以便事后分析按天存放监控脚本产生的性能情况。
至少要保留连续30天的性能日志文件(如果磁盘空间足够的话,建议可以保留更长时间的性能日志文件)2.2.从以下几方面来分析宕机的原因。
2.2.1.应用系统和WEB服务器必要的前置条件:在执行更新部署包前需要备份相应的文件引起宕机的可能原因包括:2.2.2.应用系统更新常见的情况是应用系统已经正常运行了一段时间,在更新某个部署包后出现了宕机。
针对这种情况的检查步骤是:A.检查catalina.out等应用级日志文件,看是否有明显的异常信息。
如果有异常信息且与部署包的模块有关,则建议将应用程序恢复到部署前的版本。
因此要求在执行更新部署包前需要备份相应的文件B.如果步骤A没有发现异常,则建议询问开放人员,了解部署包是否有需要长时间执行才能完成的SQL。
如果有,则建议将应用程序恢复到部署前的版本C.如果是月末或月初,则需要考虑是否有定时任务同时执行或某些定时任务占用太多资源。
应该从catalina.out等应用级日志文件中检查。
如果有,则考虑是否将定时任务的执行时间分开或优化SQL2.2.3.WEB服务器的配置参数检查WEB服务器的配置参数中的最大线程数、数据库的连接池数量等参数是否过小2.2.4.业务量的增长某项业务涉及的数据出现了爆发式增长,引起执行相关的操作占用大量系统资源。
Liunx下Tomcat调优指南1概述由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优和自身调优两类来描述。
2调优方案1.1外部环境调优1)操作系统性能优化对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU的频率,保证文件系统的读写速率等。
经过压力测试验证,在并发连接很多的情况下,CPU的处理能力越强,系统运行速度越快。
对于并发数很大的情况来说,带宽也是影响系统性能的一个重要指标,因此要实现系统的快速响应,必须拥有较高的带宽。
建议使用64位操作系统,如果是32位操作系统,建议使用企业版。
2)JAVA虚拟机性能优化Tomcat需要依赖Java虚拟机运行。
根据客户选用的主机的操作系统选择对应的JDK 的版本。
无论哪个厂商的JDK,都建议使用最新的版本。
虚拟机可通过命令行的方式改变虚拟机使用内存的大小。
如下表所示有两个参数用来设置虚拟机使用内存的大小。
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
Windows下,在文件% TOMCAT_HOME %/bin/catalina.bat,Unix下,在文件$TOMCAT_HOME/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS=’-Xms【初始化内存大小】-Xmx【可以使用的最大内存】’需要把这个两个参数值调大。
例如:JAVA_OPTS='-Xms256m -Xmx512m',表示初始化内存为256MB,可以使用的最大内存为512MB。
另外需要考虑的是Java提供的垃圾回收机制。
虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。
收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。
如果堆的空间很大,那么完全垃圾收集(FULL GC)就会很慢,但是频度会降低。
如果在客户系统中把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。
Tomcat10巨坑,软件不是越新越好。
(⽤到tomcat9及以下就可以)tomcat的版本也不易太⽼,否则会导致理论和实际不相适应: (尽量使⽤tomcat 8.x、tomcat 8.5、tomcat 9)Tomcat10巨坑结论: t o m c a t 9 和 t o m c a t 10 的依赖包不是同⼀个。
\color{#FF3030}{结论:tomcat9和tomcat10的依赖包不是同⼀个。
}结论:tomcat9和tomcat10的依赖包不是同⼀个。
tomcat9的包名以javax开头:javax.*t o m c a t 10 的包名更改为: j a k a r t a . ∗ \color{#FF3030}{tomcat10的包名更改为:jakarta.*}tomcat10的包名更改为:jakarta.∗官⽹说名:Users of Tomcat 10 onwards should be aware that, as a result of the move from Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse Foundation, the primary package for all implemented APIs has changed from j a v a x . ∗ \color{#FF3030}{javax.*}javax.∗toj a k a r t a . ∗ \color{#FF3030}{jakarta.*}jakarta.∗. This will almost certainly require code changes to enable applications to migrate from Tomcat 9 and earlier to Tomcat 10 and later. A migration tool is under development to aid this process.⽽且tomcat10在结合springMVC使⽤时,DispatcherServlet在配置时会报错。
tomcat常用的调优参数Tomcat常用的调优参数Tomcat是一个开源的Java Servlet容器,广泛应用于Java Web 应用程序的部署和运行。
为了提高Tomcat的性能和稳定性,我们可以通过调优参数来优化其配置。
本文将介绍一些常用的Tomcat 调优参数,帮助您更好地配置和优化T omcat服务器。
1. 内存设置- -Xms: 设置JVM的初始堆大小,建议设置为物理内存的1/4或1/3。
- -Xmx: 设置JVM的最大堆大小,建议设置为物理内存的1/2或2/3。
- -XX:MaxPermSize: 设置JVM的永久代大小,建议设置为256MB或512MB。
- -XX:MaxMetaspaceSize: 设置JVM的元空间大小,建议设置为256MB或512MB。
2. 线程设置- maxThreads: 设置Tomcat的最大线程数,建议根据服务器的硬件配置和并发请求数进行调整。
- acceptCount: 设置Tomcat接受请求的队列大小,建议设置为200或300。
- connectionTimeout: 设置Tomcat的连接超时时间,建议设置为30秒或60秒。
3. 连接器设置- protocol: 设置连接器的协议,常用的有HTTP/1.1和AJP/1.3。
- port: 设置连接器的监听端口,建议使用80端口作为HTTP连接器的默认端口。
- maxKeepAliveRequests: 设置每个Keep-Alive连接的最大请求数,建议设置为100或200。
- keepAliveTimeout: 设置Keep-Alive连接的超时时间,建议设置为5秒或10秒。
4. 缓存设置- cacheSize: 设置Tomcat的静态文件缓存大小,建议根据静态文件的数量和大小进行调整。
- cacheTTL: 设置静态文件缓存的过期时间,建议设置为1小时或更长。
- cacheObjectMaxSize: 设置缓存对象的最大大小,建议根据缓存对象的平均大小进行调整。
第一步:下载jdk和tomcat:JDK下载Tomcat下载最新的jdk为1.6.10,tomcat为6.0,建议jdk1.4以上,tomcat4.0以上第二步:安装和配置你的jdk和tomcat:执行jdk和tomcat的安装程序,然后设置按照路径进行安装即可。
1.安装jdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的jdk安装在C:\Program Files\Java):JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;(.;一定不能少,因为它代表当前路径)path=%JAVA_HOME%\bin (注:加在path最前面即可)在shell 中/>Java -version 检查是否设定成功。
或接着可以写一个简单的java程序来测试JDK是否已安装成功:public class Test{public static void main(String args[]){System.out.println("This is a test program.");}}将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令javac Test.javajava Test此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:\tomcat):CATALINA_HOME:c:\tomcatCATALINA_BASE:c:\tomcatTOMCAT_HOME: C:\Tomcat然后修改环境变量中的classpath,把tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如下:classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME% \common\lib\servlet-api.jar;【注意最新版本的Tomcat中可能没有common这个文件夹了。
tomcat性能优化⽅式简单整理Tomcat本⾝优化Tomcat内存优化启动时告诉JVM我要⼀块⼤内存(调优内存是最直接的⽅式)我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数JAVA_OPTS参数说明server 启⽤jdk 的 server 版Xms java虚拟机初始化时的最⼩内存Xmx java虚拟机可使⽤的最⼤内存XX: PermSize 内存永久保留区域XX:MaxPermSize 内存最⼤永久保留区域配置⽰例:JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'说明:其内存的配置需要根据服务器(或虚拟机)的实际内存来配置重启tomcat⽣效Tomcat IO优化如何必要可以使⽤APR来从操作系统级别来解决异步的IO问题。
次之使⽤NIO。
在server.xml中Tomcat 线程优化maxThreads="600" ///最⼤线程数minSpareThreads="100"///初始化时创建的线程数maxSpareThreads="500"///⼀旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"//指定当所有可以使⽤的处理请求的线程数都被使⽤时,可以放到处理队列中的请求数,超过这个数的请求将不予处理使⽤线程池在server.xml中增加executor节点,然后配置connector的executor属性,namePrefix:线程池中线程的命名前缀maxThreads:线程池的最⼤线程数minSpareThreads:线程池的最⼩空闲线程数maxIdleTime:超过最⼩空闲线程数时,多的线程会等待这个时间长度,然后关闭threadPriority:线程优先级<Executor name="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/><Connector port="8080" protocol="HTTP/1.1"executor="tomcatThreadPool"/>禁⽤DNS查询当web应⽤程序向要记录客户端的信息时,它也会记录客户端的IP地址或者通过域名服务器查找机器名转换为IP地址。
优化Tomcat性能的方法与技巧以下是20个可能与Tomcat相关的面试题以及相应的答案:1.什么是Tomcat?答案:Tomcat是一个开源的Java Web服务器,它提供了对Servlet和JSP的支持,可以用于构建动态网站和Web应用程序。
2.Tomcat的目录结构是怎样的?答案:Tomcat的目录结构包括bin、conf、lib、logs、webapps等文件夹。
bin文件夹包含可执行文件和脚本;conf文件夹包含配置文件;lib文件夹包含Java类库;logs文件夹包含日志文件;webapps文件夹包含Web应用程序。
3.如何配置Tomcat的端口号?答案:在Tomcat的conf文件夹中找到server.xml文件,在该文件中找到行,将port属性值修改为所需的端口号即可。
4.Tomcat有哪几种Connector运行模式?答案:Tomcat有BIO、NIO和APR三种Connector运行模式。
BIO是传统的Java I/O操作方式,同步且阻塞;NIO是Java非阻塞I/O操作方式;APR 是基于Apache Portable Runtime的Connector运行模式,使用C语言实现,具有高性能和可扩展性。
5.如何配置Tomcat的SSL证书?答案:在Tomcat的conf文件夹中找到server.xml文件,在该文件中找到行,添加keystoreFile和keystorePass属性,指定密钥库文件和密码即可。
6.如何设置Tomcat的会话超时时间?答案:在Tomcat的conf文件夹中找到web.xml文件,在该文件中找到元素,添加元素,设置其值为所需的时间即可。
7.如何添加自定义的过滤器?答案:在Tomcat的webapps文件夹中找到Web应用程序的WEB-INF文件夹,在该文件夹中创建一个名为filters.xml的文件,然后在该文件中添加自定义的过滤器配置。
8.如何添加自定义的监听器?答案:在Tomcat的conf文件夹中找到context.xml文件,在该文件中添加自定义的监听器配置。
Tomcat 6.0 配置多个端口一、Tomcat 安装后本身提供了一个server,端口配置默认是8080,对应目录为:..\Tomcat6.0\webapps二、Tomcat 6.0 配置多个端口,其实也就是给Tomcat增加几个server,并设置对应目录。
下面以增加两个端口号为例第一步、修改server.xml[..\Tomcat 6.0\conf](1)Tomcat提供的如下:<Service name="Catalina"><Connector port="8090" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" /><Connector port="8009"enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /><Engine name="Catalina" defaultHost="localhost"><Realm className="erDatabaseRealm"resourceName="UserDatabase"/><Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"></Host></Engine></Service>(2)比着上面的葫芦画下面的瓢、新增两个端口号,注意Service name、Engine name、appBase,当然了,端口号别忘了修改,以免重复。
Tomcat6 一些调优设置内存和连接数公司的一个服务器使用Tomcat6默认配置,在后台一阵全点击服务器就报废了,查了一下就要是PERMSIZE默认值过小造成(16-64)TOMCAT_HOME/bin/catalina.sh添加一行:JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m"问题解决(可能为调用JAR包过多原因)下面是网上看到一些设置JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "当在对其进行并发测试时,基本上30个USER上去就当机了,还要修改默认连接数设置:以下红色四行TOMCAT6中好相没有,手工加上就可以了,基本上可以解决连接数过大引起的死机。
具体数值可跟据实际情况设置<Connector port="80" protocol="HTTP/1.1"maxThreads="600"minSpareThreads="100"maxSpareThreads="500"acceptCount="700"connectionTimeout="20000"redirectPort="8443" />这样设置以后,基本上没有再当机过。
maxThreads="600" ///最大线程数minSpareThreads="100"///初始化时创建的线程数maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
Tomcat6 Optimize实验条件数据库服务器操作系统信息SYSTEM : Linux flume5 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 GNU/Linux硬件配置信息CPU : 4CPU Intel(R) Xeon(R) CPU X5650 @ 2.67GHz Cache size : 12288 KBMEMORY : 4G数据库服务器信息MySql版本:Server version: 5.5.24-log MySQL Community Server (GPL)备注:修改默认MySql服务器连接限制100为1024应用服务器操作系统信息SYSTEM : Linux flume5 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 GNU/Linux硬件配置信息CPU : 4CPU Intel(R) Xeon(R) CPU X5650 @ 2.67GHz Cache size : 12288 KBMEMORY : 4G中间件服务器信息Tomcat版本:apache-tomcat-6.0.32备注:系统线程数目没有限制(NPTL内核)以上数据因为服务器公用原因,并不纯净,但基本能保证内存空闲在2.5G上,CPU使用也足够空闲1内存1.1概念Tomcat内存优化其实也就是对JVM内存进行设置1.2配置位置配置位置:%TOMCAT_HOME%/bin下,Window:catalina.batLinux/Unix:catalina.sh首行添加:JAVA_OPTS=-Xms256m –Xmx256m …注意:Linux环境下:JAVA_OPTS=”-Xms256m –Xmx256m …”,即参数要加引号,不然不起作用1.3内存参数配置以下值大部分情况为默认值,应根据具体服务器硬件配置及业务特性来配置-Xverify:none关闭大部分类验证措施,以缩短虚拟机类加载时间-Xms16m堆内存初始值(M>1G ? 1G/64 : M/64)-Xmx256m堆内存最大值(M>1G ? 1G/4 : M/4)-Xmn4m新生代初始值(迸发收集器下通过该值来设置,该设置优先级高于-XX:NewRatio)-XX:NewRatio=2 老年代与新生代比值(迸发收集器下默认=7)-XX:SurvivorRatio=8 Eden区与Survivro区的比值-XX:PermSize=12m永久代初始值-XX:MaxPermSize=64m永久代最大值-Xss1024k 栈内存大小-XX:MaxTenuringThreshold=15由年轻代到年老带的GC阀值(迸发收集器下默认=4)-XX:+UseFastAccessorMethods get,set 方法转成本地代码1.4垃圾收集器参数配置响应时间优先(根据CPU数目及应用具体设置,一般需要CPU>4)-XX:+UseParNewGC设置新生代多线程串行收集器,可以不设置-XX:+UseConcMarkSweepGC设置老年代迸发收集器,注意:设置了该值,①-XX:+UseParNewGC可以不用再设置②-XX:NewRatio设置失效,因为在迸发收集器下,该值被设置为7即:XX:NewRatio=7, 该种情况下,新生代将足够小(与通常相比),便于进行更多次的新生代垃圾回收(Minor GC,采用的复制算法),设置1.5G内存配置时,新生代才192M,这时进行Minor GC平均才30-50ms,是很小的建议保留默认值,如果根据业务,需要设置新生代大小,可以用参数:-Xmn③-XX:MaxTenuringThreshold=4 这个值也比较合理,建议保留,测试修改为2、3时,老年代会比较快就占用内存很多,一旦发生FULL GC,讲非常耗时-XX:ParallelGCThreads=8设置并行收集的线程数-XX:+UseCMSCompactAtFullCollection打开对年老代的压缩,可能会影响性能,但可以消除碎片-XX:CMSFullGCsBeforeCompaction=10由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。
此值设置运行多少次Full GC以后对内存空间进行压缩、整理-XX:CMSInitiatingOccupancyFraction=75指示在老年代在使用了n% 的比例后, 启动concurrent collector, 默认值是68-XX:+UseCMSInitiatingOccupancyOnly指示只有在老年代在使用了初始化的比例后concurrent collector 启动收集吞吐率优先(根据CPU数目及应用具体设置,一般需要CPU>4)-XX:+UseParallelGC设置新生代并行收集器-XX:+UseParalledlOldGC设置老年代并行收集器-XX:ParallelGCThreads=8设置并行收集的线程数-XX:MaxGCPauseMillis=10置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值-XX:+UseAdaptiveSizePolicys设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开2线程2.1概念进程是资源管理的最小单位,线程是程序执行的最小单位,即CPU最基本的调度单位。
Sun JDK线程实现:基本上操作系统支持怎么样的线程模型,Java 虚拟机就怎么映射。
Window和Linux下,都是1对1线程模型,Unix一般是N对N线程模型,(也可选择1对1线程模型)32位系统下,Windows单进程最多能分配2G内存,Linux单进程最多能分配3G内存。
注意1:进程的内存分配是通过虚拟内存来进行分配的(不完全是物理内存),所以查看某一个进程要看其虚拟内存,Windows下,在任务管理器中,可以调出“提交大小”查看,Linux下,可以通过Top的VIRT列查看注意2:线程数计算公式假定总内存TOTAL_M = 2048M(这个Windows下是2048,Linux下是3072)堆内存HEAM_M = 1024M,永久代内存:PERM_M= 128M系统保留内存:RETAIN_M = 130M(一般是100M-150M)栈分配:-Xss1m则可产生线程数目为:(TOTAL_M - HEAM_M - PERM_M - RETAIN_M)/1m=(2048-1024-128-130)/1=766以上计算没有考虑Thread对象本身的大小,在没有对Thread对象引入其余大对象属性时,Thread对象本身是非常小的,基本可以忽略对堆内存的影响。
但如果Thread对象引入其余大对象属性,则堆内存的影响需要统计进去,比如堆内存只有20M, 每个Thread对象引入4M的大对象,则实际最多产生4-5个线程,因为这个时候需要考虑对象的内存分配情况了64位系统下,只要有足够的内存,线程创建数基本没有限制(NPTL内核的64位linux基本没有限制,即Linux内核>2.6 )2.2配置位置配置位置:%TOMCAT_HOME%/conf下,server.xml文件2.3启用线程池<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"maxThreads="2000" minSpareThreads="500"/>name:线程池名称,必须唯一namePrefix:线程池创建线程的名称前缀,线程名称一般为namePrefix+ threadNumbermaxThreads:线程池存活的最大线程数,默认值为200minSpareThreads:线程池初始线程数(保持活跃的最小线程数),默认值为25一般只需要配置maxThreads和minSpareThreads即可具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\config\executor.html<Connector executor="tomcatThreadPool"port="80" protocol=" HTTP/1.1"connectionTimeout="20000"redirectPort="8443"enableLookups="false"acceptCount="1024" />acceptCount:当tomcat起动的线程数达到最大时,接受排队的请求个数,默认值为100enableLookups:是否反查域名,取值为:true或false。
缺省值为false表示使用客户端主机名的DNS解析功能,被ServletRequest.getRemoteHost方法调用。
compression:压缩传输,取值on/off/force,默认值off?具体其余参数可参考:%TOMCAT_HOME%\webapps\docs\config\http.html3数据库连接池3.1概念据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。
这项技术能明显提高对数据库操作的性能3.2配置位置配置位置:%TOMCAT_HOME%/conf下server.xml文件具体项目的WEB-INF/web.xml文件3.3启用数据库连接池①<Context path="" docBase="" reloadable="false"><Resource name="jdbc/ads_mysql" auth="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10000"username="root"password="root"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/dataBaseName"/></Context>②在项目web.xml配置<resource-ref><description>MySQL DataSource</description><res-ref-name> jdbc/ads_mysql </res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref>③将mysql-connector-java-5.1.20-bin.jar类似的数据库驱动连接jar包放置到%TOMCAT_HOME%/lib目录下注:实际该处一般采用外部数据库连接池实现,比如C3P0,DBCP等注意:MySql服务器默认只允许打开100个连接,要修改此限制,请在MySql 配置文件my.ini 或f查找mysqld, 如下,在[mysqld]添加该配置值[mysqld]max_connections = 1024重新启动生效查看配置值是否生效:mysqladmin -uroot -p variables|grep max_connections连接是否保持?4其余优化4.1启用NIO<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />修改为:<Connectorport="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"redirectPort="8443" />4.2调整文件打开数单进程文件打开数:默认Windows下打开文件数是2000,Linux系统默认打开文件数是1024。