tomcat参数优化

一.Tomcat内存优化

Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数。

1.JAVA_OPTS参数说明

Java代码

-server  启用jdk 的 server 版;

-Xms      java虚拟机初始化时的最小内存;

-Xmx      java虚拟机可使用的最大内存;

-XX:PermSize    内存永久保留区域

-XX:MaxPermSize   内存最大永久保留区域

设置Tomcat启动的初始内存,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项,要加“m”说明是MB,否则就是KB了,在启动tomcat时会报内存不足。

-Xms:初始值  【初始化内存大小】

-Xmx:最大值  【可以使用的最大内存】

-Xmn:最小值

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn
-Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。

提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用 程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始
化,虚拟机就必须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数
据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因 此一般建议堆的最大值设置为可用内存的最大值的80%。

  • 如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究 垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
  • 在重启你的Tomcat服务器之后,这些配置的更改才会有效。

Windows在文件{tomcathome}/bin/catalina.bat,Unix在文件{tomcathome}/bin/catalina.sh的前面,增加如下设置:

服务器参数配置

tomcat默认: -Xms1024m
-Xmx1024m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m

Java_OPTS参数

JAVA_OPTS="-Djava.awt.headless=true
-Dfile.encoding=UTF-8

-server -Xms2048m -Xmx2048m

-XX:NewSize=512m -XX:MaxNewSize=512m
-XX:PermSize=512m

-XX:MaxPermSize=512m
-XX:+DisableExplicitGC"

配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:

1.首先查看Tomcat 进程号:

ps -ef | grep tomcat

我们可以看到Tomcat 进程号是
9217

1.查看是否配置生效:

sudo jmap –heap 9217

我们可以看到MaxHeapSize 等参数已经生效。

二.Tomcat并发优化

1.Tomcat连接相关参数

在Tomcat配置文件conf下面 server.xml 中的配置中和连接数相关的参数有:

minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10

maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75

acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100

enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false

connectionTimeout:网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。

1.参数说明

默认的tomcat 参数:

<Connector port=“8080"
protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443" />

修改:

<Connector port=“8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="600"

minSpareThreads="100"

maxSpareThreads="500"

acceptCount="700"

connectionTimeout="20000"

redirectPort="8443" />

这样设置以后,基本上没有再当机过。

protocol="org.apache.coyote.http11.Http11NioProtocol"
///使用java的异步io护理技术,no blocking IO

maxThreads=“600" 表示最多同时处理600个连接 ///最大线程数

minSpareThreads=“100" 表示即使没有人使用也开这么多空线程等待
 ///初始化时创建的线程数

maxSpareThreads=“500" 表示如果最多可以空500个线程,例如某时刻有505人访问,之后没有人访问了,则tomcat不会保留505个空线程,而是关闭505个空的。
  ///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。

acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

这里是http connector的优化,如果使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,那么还需要优化ajp connector。

<Connector port="8009"
protocol="AJP/1.3" maxThreads="600" minSpareThreads="100"
maxSpareThreads="500" acceptCount="700"
connectionTimeout="20000" redirectPort="8443" />

解决常遇到的一些报错

一、Tomcat的JVM提示内存溢出

查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误

二、修改Tomcat的JVM

1、错误提示:java.lang.OutOfMemoryError:
Java heap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Out of Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的使用内存即可解决此问题。

windows环境下修改

“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:JAVA_OPTS=-Xms2048m -Xmx2048m

Linux环境下修改

“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=-Xms2048m -Xmx2048m

其中,-Xms设置初始化内存大小,-Xmx设置可以使用的最大内存。

跟我上面那么设置就可以了。

2、错误提示:java.lang.OutOfMemoryError:
PermGen space

原因:

PermGen space的全称是Permanent
Generation space,是指内存的永久保存区域,这块内存主要是被JVM存

放Class和Meta信息的,Class在被Loader时就会被放到PermGen
space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen
space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

解决方法:

在catalina.bat的第一行增加:

set JAVA_OPTS=-Xms64m -Xmx256m
-XX:PermSize=128M -XX:MaxNewSize=256m - XX:MaxPermSize=256m

在catalina.sh的第一行增加:

JAVA_OPTS=-Xms64m -Xmx256m
-XX:PermSize=128M -XX:MaxNewSize=256m  XX:MaxPermSize=256m

三、查看Tomcat的JVM内存

  1. Tomcat6中没有设置任何默认用户,因而需要手动往Tomcat6的conf文件夹下的tomcat-users.xml文件中添加用户。
    如:
  2. <role rolename="manager"/>

<user username="tomcat"
password="tomcat" roles="manager"/>

注:添加完需要重启Tomcat6。

  1. 访问http://localhost:8080/manager/status,输入上面添加的用户名和密码。
  2. 然后在如下面的JVM下可以看到内存的使用情况。
时间: 2024-10-12 00:45:10

tomcat参数优化的相关文章

nginx+tomcat集群时,tomcat参数优化

maxKeepAliveRequests=“1”: nginx动态的转给tomcat,nginx是不能keepalive的,而tomcat端默认开启了keepalive,会等待keepalive的timeout, 默认不设置就是使用connectionTimeout.所以必须设置tomcat的超时时间,并关闭tomcat的keepalive. 否则会产生大量tomcat的socket timewait.maxKeepAliveRequests=”1”就可以避免tomcat产生大量的TIME_WA

JVM虚拟机详解+Tomcat性能优化

1.JVM(java virtual mechinal) (1)JVM有完善的硬件架构,如处理器.堆栈.寄存器当,还具有相应的指令系统. (2)JVM的主要工作时解释自己的指令集(即字节码),并映射到本地的cpu的指令集或OS系统调用. 2.JVM虚拟机主要有堆.栈.本地方法栈.方法区组成 注:(1)堆和栈都是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除. (2)在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护端点和现场. (3)堆.队列,先进先

Tomcat 调优及 JVM 参数优化

Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com/qlqwjy/p/8007490.html Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你.对于操作系统优化来说,是尽可能的增大可使 用的内存容量.提高CPU 的频率,保证文件系统的读写速率等.经过压力测试验证,在并发连接很多的

Tomcat服务器优化

由于Tomcat的运行依赖于JVM,从虚拟机的角度我们把Tomcat的调整分为外部环境调优和自身调优两类来描述. 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最大值设置为可用内存的最大值的80%. Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大. Tomcat默认可以使用的内存为128MB,Windows下,在文件/bin

Tomcat学习总结(11)——Linux下的Tomcat安全优化

1.web.xml配置及修改: 站点默认主页: <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> 404及500设置 <error-page

Tomcat配置优化

TOMCAT配置优化一. Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式,按天存放,解决catalina.out日志文件过大问题1.准备jar包:log4j-1.2.16.jar , tomcat-juli.jar, tomcat-juli-adapters.jar 注意:tomcat-juli.jar, tomcat-juli-adapters.jar 需要根据不同tomcat的版本去相应下载(从http://archive.apache.org/dist/to

tomcat 8优化配置

Tomcat 8 下载:wget http://apache.fayea.com/tomcat/tomcat-8/v8.0.32/bin/apache-tomcat-8.0.32.tar.gz 压缩包解压:tar -zxvf apache-tomcat-8.0.32.tar.gz 移到解压出来文件夹到 /usr 下:mv apache-tomcat-8.0.32/ /usr/program/ 为了方便,修改解压目录的名字:mv /usr/program/apache-tomcat-8.0.32/

tomcat并发优化

Tomcat 并发优化 首先先介绍一款知名的网站压力测试工具:webbench. Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况.webbench的标准测试可以向我们展示服务器的两项内容:每分钟相应请求数和每秒钟传输数据量.webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力.还有就是他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试,最多可以模拟3万个并发连接去测试网站的负

tomcat 配置文件优化

一.前言 对于tomcat的优化主要包括两个方面,一个是对Tomcat启动参数进行优化配置,另一个是Tomcat容器内的优化配置,下面分别用具体详细的参数配置说明进行分析(更多推荐"tomcat的HTTPS安全通道配置".源码分析等) 二 .Tomcat内存优化 tomcat启动参数设置,主要在其bin目录下catalina文件(window环境对象catalina.bat.linux环境对应catalina.sh)进行设置,在文件头部复制下面参数示例, 1. Window环境 详细的