Tomcat6优化

合集下载

tomcat常见的错误与解决方案小结

tomcat常见的错误与解决方案小结

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调优指南

Liunx下Tomcat调优指南

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及以下就可以)

Tomcat10巨坑,软件不是越新越好。(用到tomcat9及以下就可以)

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常用的调优参数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: 设置缓存对象的最大大小,建议根据缓存对象的平均大小进行调整。

tomcat_6.0.18_配置

tomcat_6.0.18_配置

第一步:下载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性能优化⽅式简单整理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面试题

Tomcat面试题

优化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配置多个端口

tomcat配置多个端口

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 一些调优设置内存和连接数

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线程。

(荐)Tomcat调优及JVM参数优化

(荐)Tomcat调优及JVM参数优化

(荐)Tomcat调优及JVM参数优化Tomcat 的缺省配置是不能稳定长期运⾏的,也就是不适合⽣产环境,它会死机,让你不断重新启动,甚⾄在午夜时分唤醒你。

对于优化来说,是尽可能的增⼤可使⽤的内存容量、提⾼CPU 的频率,保证⽂件系统的读写速率等。

经过压⼒验证,在并发连接很多的情况下,CPU 的处理能⼒越强,系统运⾏速度越快。

Tomcat 的优化不像其它软件那样,简简单单的修改⼏个参数就可以了,它的优化主要有三⽅⾯,分为系统优化,Tomcat 本⾝的优化,虚拟机(JVM)调优。

系统优化就不在介绍了,接下来就详细的介绍⼀下 Tomcat 本⾝与 JVM 优化,以 Tomcat 7 为例。

⼀、Tomcat 本⾝优化Tomcat 的⾃⾝参数的优化,这块很像 ApacheHttp Server。

修改⼀下 xml 配置⽂件中的参数,调整最⼤连接数,超时等。

此外,我们安装Tomcat 是,优化就已经开始了。

1、⼯作⽅式选择为了提升性能,⾸先就要对代码进⾏动静分离,让 Tomcat 只负责 jsp ⽂件的解析⼯作。

如采⽤ Apache 和 Tomcat 的整合⽅式,他们之间的连接⽅案有三种选择,JK、http_proxy 和 ajp_proxy。

相对于 JK 的连接⽅式,后两种在配置上⽐较简单的,灵活性⽅⾯也⼀点都不逊⾊。

但就稳定性⽽⾔不像JK 这样久经考验,所以建议采⽤ JK 的连接⽅式。

2、Connector 连接器的配置之前⽂件介绍过的 Tomcat 连接器的三种⽅式: bio、nio 和 apr,三种⽅式性能差别很⼤,apr 的性能最优, bio 的性能最差。

⽽ Tomcat 7使⽤的 Connector 默认就启⽤的 Apr 协议,但需要系统安装 Apr 库,否则就会使⽤ bio ⽅式。

3、配置⽂件优化配置⽂件优化其实就是对 server.xml 优化,可以提⼤⼤提⾼ Tomcat 的处理请求的能⼒,下⾯我们来看 Tomcat 容器内的优化。

系统稳定性优化方案

系统稳定性优化方案

系统稳定性优化方案1. 系统优化从操作系统到WEB服务器,从数据库和SQL语句等都可以优化1.1. 操作系统检查系统的空载负荷。

空载负荷指仅安装操作系统的情况下,通过一些工具查看系统的负载。

这样做的目的是通过检查系统的运行情况,减少和屏蔽不必要的服务,最大限度的为应用系统提供更多的资源建议是通过编写脚本记录系统运行时的性能情况。

比如按占用CPU对进程排序,如果是非核心进程,则可以根据情况停止这些进程的启动。

1.2. TOMCATJAVA版本需求:必须要java 1.6及以上版本修改Tomcat目录/bin/catalina.sh文件中,找到注释文字的最后一段,敲入一个回车,加入如下的参数配置参数说明:1. -server表示TOMCAT以产品模式启动2. -Xms和-Xmx为JVM的值。

需要测试配置的值是否有效。

在命令提示符下键入如下命令:Java -Xmx3096M -version如果显示如下所示,则说明配置值有效3. -Xmn推荐配置为整个堆的3/84. -Xss设定每个线程的堆栈大小。

一般不易设置超过1M,要不然容易出现out ofmemory5. -XX:+AggressiveOpts当JDK版本升级时,都会使用最新加入的优化技术6. -XX:+UseBiasedLocki ng 启用一个优化了的线程锁,对线程处理自动进行最优调配。

7. -XX:PermSize=128M-XX:MaxPermSize=2024M PermSize 是物理内存的1/64,MaxPermSize 是物理内存的1/48. -XX:LargePageSizeInBytes 指定Java heap 的分页页面大小9. -XX:CMSI nitiat in gOccupa ncyFractio n 基本上满足(Xmx-Xm n)*(100- CMSInitiatingOccupancyFraction)/100>=Xmn 就不会出现promotion failed。

tomcat数据备份、日常维护和常见问题处理方法

tomcat数据备份、日常维护和常见问题处理方法

tomcat数据备份、日常维护和常见问题处理方法### Tomcat数据备份、日常维护和常见问题处理方法#### 导语Tomcat作为一款流行的Java Servlet容器,被广泛应用于Web应用的开发与部署中。

对于保障Tomcat服务的高可用性和数据安全性,定期进行数据备份、日常维护以及掌握常见问题的处理方法是至关重要的。

本文将详细阐述这三个方面的实践指南。

#### 一、Tomcat数据备份数据备份是防止数据丢失的关键措施,以下为Tomcat数据备份的常规步骤:1.**备份目录选择**:- **数据目录**:通常需要备份Tomcat的数据目录,如`/path/to/tomcat/data`,该目录下可能存放了应用的数据库文件或用户上传的文件。

- **配置文件**:备份Tomcat的配置文件,包括`server.xml`、`context.xml`、`web.xml`等,这些文件通常位于Tomcat安装目录下的`conf`文件夹中。

- **应用文件**:备份部署在Tomcat上的应用文件,通常是WAR包或者应用解压后的文件夹。

2.**备份方法**:- 使用命令行工具如`cp`或`rsync`进行文件复制。

- 利用定时任务(如`cron`)实现定期自动备份。

- 对于数据库,使用相应的数据库备份工具(如mysqldump、pg_dump)进行备份。

3.**备份频率**:- 根据数据的重要性和更新频率确定备份频率,对于频繁变动的数据,应实现实时或定时近实时的备份。

#### 二、Tomcat日常维护日常维护可以确保Tomcat服务器健康稳定地运行。

1.**更新与升级**:- 定期检查Tomcat版本,更新到最新版以获得安全修复和性能改进。

- 在升级前确保备份数据,并测试新版本兼容性。

2.**日志检查**:- 定期查看Tomcat的日志文件,如`catalina.out`,监控错误和异常。

- 分析日志中反复出现的错误,找出问题根源并进行修复。

解决 Tomcat 服务崩溃的问题

解决 Tomcat 服务崩溃的问题

解决 Tomcat 服务崩溃的问题Tomcat 服务器是一种用来处理 Web 应用程序的开源服务器。

由于其高效、稳定的特点,近年来在 Web 开发领域得到了广泛应用。

但是,有时候 Tomcat 服务也会遇到崩溃的问题,这对于系统管理员和开发人员来说都是非常头痛的事情。

在本文中,我们将探讨如何解决 Tomcat 服务崩溃的问题,以使我们的 Web 应用程序能够更加稳定地运行。

1. 清理 Tomcat 服务器日志当 Tomcat 服务器出现崩溃的问题时,第一个要想到的就是查看 Tomcat 服务器的日志文件。

日志文件中记录了服务器的运行状态、错误信息以及异常堆栈等信息,可以帮助我们定位问题的根源。

如果日志文件过大,可能会占用过多的硬盘空间,甚至会导致服务器出现异常。

因此,我们建议定期清理 Tomcat 服务器日志文件,保留最近一段时间内的日志信息即可。

清理日志的方法:- 在 Tomcat 安装目录下找到 logs 目录,删除过期的日志文件。

- 修改 Tomcat 的 logging.properties 配置文件,配置日志的输出级别和日志的保存周期。

可根据自身需求来设置级别和周期。

2. 优化 JVM 参数设置JVM 是 Java 虚拟机,是 Java 程序的核心组件之一。

Tomcat 服务器是运行在 JVM 上的 Java 应用程序,因此 JVM 参数的设置对Tomcat 服务器的性能和稳定性有很大影响。

我们建议对 JVM 参数进行优化设置,以提升 Tomcat 服务器的运行效率和稳定性。

优化 JVM 参数的方法:- 适当增加 JVM 堆空间大小。

在 Tomcat 安装目录下的 bin 目录中的 catalina.bat (Windows)/ catalina.sh (Linux)文件中可以找到 JVM 启动参数,增加 -Xms 和 -Xmx 参数来增加 JVM 堆空间大小。

- 设置内存溢出的报警机制。

tomcat6.0.44“hasfailedtostopit.Thisisverylike。。。

tomcat6.0.44“hasfailedtostopit.Thisisverylike。。。

tomcat6.0.44“hasfailedtostopit.Thisisverylike。

1. 问题起因我们项⽬中缓存模块某个实现采⽤了ehcache(2.4.3),当项⽬部署到tomcat中后,对tomcat做停⽌服务操作(点击eclipse的console红⾊的停⽌按钮,奇怪的是有⼩概率的情况不能复现这个问题??),发现tomcat不能正常停⽌,报错 appears to have started a thread named [xxx] but has failed to stop it. This is very likely to create a memory leak.java进程不能正常结束,需要⼿动kill进程。

信息: Stopping service Catalina2015-9-26 11:40:17 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc严重: The web application [/hd] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 2015-9-26 11:40:17 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重: The web application [/hd] appears to have started a thread named [pool-2-thread-1] but has failed to stop it. This is very likely to create a memory leak.2015-9-26 11:40:17 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重: The web application [/hd] appears to have started a thread named [net.sf.ehcache.CacheManager@268d15] but has failed to stop it. This is very likely to create a memory leak.2015-9-26 11:40:17 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重: The web application [/hd] appears to have started a thread named [org.hibernate.cache.spi.UpdateTimestampsCache.data] but has failed to stop it. This is very likely to create a memory leak.2015-9-26 11:40:17 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads严重: The web application [/hd] appears to have started a thread named [org.hibernate.cache.internal.StandardQueryCache.data] but has failed to stop it. This is very likely to create a memory leak.2015-9-26 11:40:17 org.apache.coyote.http11.Http11Protocol destroy信息: Stopping Coyote HTTP/1.1 on http-80802. ehcache 线程不会⾃动停⽌问题分析后,发现是ehcache的三个线程不能⾃动停⽌(或者说ehcache未在应⽤停⽌/jvm停⽌的时候将其结束)。

tomcat7.0优化方案

tomcat7.0优化方案

Tomcat7.0优化方案线程池参数,需要直接在connector节点配置。

<Connector port="8080"protocol="org.apache.coyote.http11.Http11NioProtocol"connectionTimeout="20000"URIEncoding="UTF-8"useBodyEncodingForURI="true"maxThreads="768"minSpareThreads="64"enableLookups="false"redirectPort="8443" />调整内存JAVA_OPTS="-Xms1024m -Xmx1024"启用APRApr要自己安装<Connector port="8081"executor="tomcatThreadPool"protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"URIEncoding="UTF-8"useBodyEncodingForURI="true"enableLookups="false"redirectPort="8444" />调整线程池<Connector port="8081"executor="tomcatThreadPool"protocol="org.apache.coyote.http11.Http11AprProtocol"connectionTimeout="20000"URIEncoding="UTF-8"useBodyEncodingForURI="true"enableLookups="false"redirectPort="8444" /><Executor name="tomcatThreadPool"namePrefix="catalina-exec-"maxThreads="1024"minSpareThreads="512"prestartminSpareThreads="true" />使用JVisualVM远程监控Tomcat在 tomcat 的 catalina.bat 中添加如下参数:s et JAVA_OPTS=-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port="9004"-Dcom.sun.management.jmxremote.authenticate="false"-Dcom.sun.management.jmxremote.ssl="false"其中-Dcom.sun.management.jmxremote.port=9004 指定了 JMX 启动的代理端口;这个端口就是 Visual VM 要连接的端口其中-Dcom.sun.management.jmxremote.ssl ="false" 指定了 JMX 是否启用ssl其中-Dcom.sun.management.jmxremote.authenticate =9004指定了 JMX 是否启用。

Tomcat 6在Linux上的安装配置

Tomcat 6在Linux上的安装配置

touch /var/lock/subsys/local
export JAVA_HOME=/usr/java/jdk1.6.0_16
/usr/local/apache-tomcat-6.0.26/bin/startup.sh
#这个是我的目录的
这样在系统重启后就可以自动启动Tomcat.
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.16/temp
Using JRE_HOME: /usr/local/jdk1.6.0_20
五、使用“ps -ef |grep tomcat”可以显示tomcat已启动
【或者在bin下执行./startup.sh】
我的电脑上会出现如下内容:
Using CATALINA_BASE: /usr/local/apache-tomcat-6.0.16
Using CATALINA_HOME: /usr/local/apache-tomcat-6.0.16
export TOMCAT_HOME="/usr/local/apach-tomcat-6.0.16"
保存退出
# source /etc/profile //让当前配置立即生效
四、启动tomcat服务器
$ /usr/local/apach-tomcat-6.0.16/bin/startup.sh
点击左侧的 download的一个版本,我选择的是 tomcat6.x,你可以根据自己的实际情况进行选择安装,点击超连接,选择 Binary Distributions 下的tar.gz (pgp, md5) 压缩包,进行下载
二、下载到本地后,进行解压

tomcat 知识点总结

tomcat 知识点总结

tomcat 知识点总结Tomcat 知识点总结Tomcat 是一个开源的 Java Web 应用服务器,由 Apache 软件基金会开发和维护。

它是目前使用最广泛的Java Web 服务器之一,被广泛应用于企业级Web 应用的开发和部署。

本文将对Tomcat 的一些重要知识点进行总结和介绍。

一、Tomcat 的基本概念和特点1. Tomcat 是一个Servlet 容器和JSP 容器,它实现了Java Servlet 和 JavaServer Pages 规范,用于处理动态的 Web 内容。

2. Tomcat 是一个独立的Web 服务器,可以独立运行,也可以与其他Web 服务器(如Apache HTTP Server)配合使用,实现更强大的功能。

3. Tomcat 使用 Java 语言开发,具有跨平台的特点,可以在不同的操作系统上运行,如 Windows、Linux、MacOS 等。

二、Tomcat 的安装和配置1. 下载 Tomcat 的安装包,并解压到指定目录。

2. 配置环境变量,设置 JAVA_HOME 和 CATALINA_HOME。

3. 配置 Tomcat 的服务器端口、虚拟主机、连接池等参数。

4. 配置 Tomcat 的日志记录,可以设置日志级别和日志文件位置。

三、Tomcat 的目录结构和重要文件1. bin 目录:包含了 Tomcat 的启动和关闭脚本。

2. conf 目录:包含了Tomcat 的配置文件,如server.xml、web.xml 等。

3. lib 目录:包含了 Tomcat 运行所需的库文件。

4. webapps 目录:用于存放 Web 应用的目录,每个 Web 应用都有一个对应的目录。

5. logs 目录:用于存放 Tomcat 的日志文件。

四、Tomcat 的启动和关闭1. 启动Tomcat:运行startup.bat(Windows)或startup.sh (Linux)脚本。

Tomcat升级方案及服务器安全建议

Tomcat升级方案及服务器安全建议

Tomcat 升级方案一、版本升级升级当前的tomcat版本为最新稳定版本。

故名思议,最新稳定版本就要兼顾最新和稳定这两个概念。

一个稳定的版本,是需要时间沉淀的,而最新又是相对于稳定版而言的最新。

因此我们一般会选择当前大版本中,最新版本往前推几个版本或者往前推几个月出的版本。

目前,企业常用的tomcat大版本为6.0、7.0和8.0版本,9.0版本虽然已经出了很久了,但是仍然不建议使用。

建议升级到7.0.68或8.0.32版本。

在升级版本中,需要注意的事情有两点:1、尽量避免跨大版本的升级(跨版本升级需要同时升级系统JDK版本);2、将当前老版本 tomcat 的server.xml、catalina.sh、web.xml和tomcat-users.xml 文件进行备份,然后部署完新版本的 tomcat 之后,将这些配置文件覆盖过去即可,然后停掉旧版本,启动新版本即可完成升级操作。

二、隐藏版本信息为了避免黑客针对某些版本进行攻击,因此我们需要隐藏或者伪装 Tomcat 的版本信息。

默认 Tomcat 的版本信息如下:针对该信息的显示是由一个jar包控制的,该jar包存放在 Tomcat 安装目录下的lib 目录下,名称为 catalina.jar。

我们可以通过 jar xf 命令解压这个 jar 包会得到两个目录 META-INF 和 org ,通过修改 org/apache/catalina/util/ServerInfo.properties 文件中的 serverinfo 字段来实现来更改我们tomcat的版本信息。

文件信息如下:[root@localhost ~]# cat org/apache/catalina/util/ServerInfo.prop erties |grep -v '^$|#'=Apache Tomcat/7.0.53server.number=7.0.53.0server.built=Mar 25 2014 06:20:16当然,还有另外一种方法来实现隐藏或伪装Tomcat的版本信息,不过本质和上面一样,操作如下:[root@localhost ~]# cd /usr/local/apache-tomcat-7.0.53/lib[root@localhost lib]# mkdir -p org/apache/catalina/util[root@localhost lib]# cd org/apache/catalina/util[root@localhost util]# vim ServerInfo.properties=nolinux #如果想修改成其它版本号,把这个地方的值改成其它值就行了修改完毕之后,重启 Tomcat即可看到效果!效果如下:三、关闭war自动部署默认 Tomcat 是开启了对war包的热部署的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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。

相关文档
最新文档