tomcat 配置及优化

tomcat7 配置详解http://www.jianshu.com/p/0042d976bb39

tomcat6 配置详解 http://www.jianshu.com/p/0042d976bb39

tomcat配置优化

1. Tomcat优化其实就是对server.xml优化(开户线程池,调整http connector参数)

搜索【<Executor name="tomcatThreadPool"】,开启并调整为 
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" 
        maxThreads="1000" maxIdleTime="60000" 
        minSpareThreads="20"/> 
搜索【port="8080"】,调整为 
<Connector executor=" tomcatThreadPool" port="8080" //开启线程池 
    protocol="org.apache.coyote.http11. Http11AprProtocol//开启Apr协议,需要安装Apr支持 
     maxHttpHeaderSize="8192" maxThreads="1000" processorCache="1000" acceptCount="1000" 
    minSpareThreads="100" 
    acceptorThreadCount="8" URIEncoding="UTF-8" 
     enableLookups="false" redirectPort="8443" //关闭反向查询 
     connectionTimeout="120000" keepAliveTimeout="120000" 
     maxKeepAliveRequests="65535" disableUploadTimeout="true" 
     compression="on" compressionMinSize="4096" //开启静态文件压缩 
     noCompressionUserAgents="gozilla, traviata" //开启静态文件压缩 
     compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/x-javascript " //开启静态文件压缩 
/>

2. 对catalina.sh优化JVM

打开 Tomcat路径\bin\ catalina.sh,在最顶部加入,红色部分请根据实际情况调整 
JAVA_OPTS="-server -showversion -Xms12g -Xmx12g -XX:PermSize=256m -XX:MaxPermSize=256m" 
JAVA_OPTS="$JAVA_OPTS -d64 -XX:CICompilerCount=8 -XX:+UseCompressedOops" 
JAVA_OPTS="$JAVA_OPTS -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90" 
JAVA_OPTS="$JAVA_OPTS -XX:ReservedCodeCacheSize=256m -XX:-UseAdaptiveSizePolicy" 
JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai -XX:-DontCompileHugeMethods" 
JAVA_OPTS="$JAVA_OPTS -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking" 
JAVA_OPTS="$JAVA_OPTS -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled " 
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=256m -XX:+UseFastAccessorMethods" 
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true" 
JAVA_OPTS="$JAVA_OPTS -XX:+UseGCOverheadLimit -XX:AllocatePrefetchDistance=256 -XX:AllocatePrefetchStyle=1" 
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=200" 
【注意】 
1.-Xms=-Xmx=服务器内存*70%,如部署tomcat,jboss在同一台服务器-Xms=-Xmx=服务器内存*80%*1/4

2. 添加的参数建议要自己明白是什么意思,可以参考JVM参数列表

1、内存优化:

优化内存,主要是在bin/catalina.bat或bin/catalina.sh 配置文件中进行。Linux上,在catalina.sh中添加:

JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128M -XX:MaxPermSize=256M"

其中:

 -server:启用jdk的server版本。
 -Xms:虚拟机初始化时的最小堆内存。
 -Xmx:虚拟机可使用的最大堆内存。 #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
 -XX:PermSize:设置非堆内存初始值,默认是物理内存的1/64。
 -XX:MaxNewSize:新生代占整个堆内存的最大值。
 -XX:MaxPermSize:Perm(俗称方法区)占整个堆内存的最大值,也称内存最大永久保留区域。

1)错误提示:Java.lang.OutOfMemoryError:Javaheap space

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误,Outof Memory(系统内存不足)的异常,从而导致客户端显示500错误,一般调整Tomcat的-Xms和-Xmx即可解决问题,通常将-Xms和-Xmx设置成一样,堆的最大值设置为物理可用内存的最大值的80%。

set JAVA_OPTS=-Xms512m-Xmx512m

2)错误提示:java.lang.OutOfMemoryError: PermGenspace

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

setJAVA_OPTS=-XX:PermSize=128M

3)在使用-Xms和-Xmx调整tomcat的堆大小时,还需要考虑垃圾回收机制。如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

2、连接数优化:

#优化连接数,主要是在conf/server.xml配置文件中进行修改。

2.1、优化线程数

找到Connectorport="8080" protocol="HTTP/1.1",增加maxThreads和acceptCount属性(使acceptCount大于等于maxThreads),如下:

<Connectorport="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443"acceptCount="500" maxThreads="400" />

其中:

 maxThreads:tomcat可用于请求处理的最大线程数,默认是200
 minSpareThreads:tomcat初始线程数,即最小空闲线程数
 maxSpareThreads:tomcat最大空闲线程数,超过的会被关闭
 acceptCount:当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理.默认100

2.2、使用线程池

在server.xml中增加executor节点,然后配置connector的executor属性,如下:

<Executorname="tomcatThreadPool" namePrefix="req-exec-"maxThreads="1000" minSpareThreads="50"maxIdleTime="60000"/>
<Connectorport="8080" protocol="HTTP/1.1"executor="tomcatThreadPool"/>

其中:

 namePrefix:线程池中线程的命名前缀
 maxThreads:线程池的最大线程数
 minSpareThreads:线程池的最小空闲线程数
 maxIdleTime:超过最小空闲线程数时,多的线程会等待这个时间长度,然后关闭
 threadPriority:线程优先级

注:当tomcat并发用户量大的时候,单个jvm进程确实可能打开过多的文件句柄,这时会报java.NET.SocketException:Too many open files错误。可使用下面步骤检查:

 ps -ef |grep tomcat 查看tomcat的进程ID,记录ID号,假设进程ID为10001
 lsof -p 10001|wc -l 查看当前进程id为10001的 文件操作数
 使用命令:ulimit -a 查看每个用户允许打开的最大文件数

3、Tomcat Connector三种运行模式(BIO, NIO, APR)

3.1、三种模式比较:

1)BIO:一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下在linux系统中默认使用这种方式。

2)NIO:利用Java的异步IO处理,可以通过少量的线程处理大量的请求。Tomcat8在Linux系统中默认使用这种方式。Tomcat7必须修改Connector配置来启动(conf/server.xml配置文件):

<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>

3)APR(Apache Portable Runtime):从操作系统层面解决io阻塞问题。Linux如果安装了apr和native,Tomcat直接启动就支持apr。

3.2、apr模式

安装apr以及tomcat-native

yum -y install apr apr-devel

进入tomcat/bin目录,比如:

cd /opt/local/tomcat/bin/
tar xzfv tomcat-native.tar.gz
cd tomcat-native-1.1.32-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config
make && make install

#注意最新版本的tomcat自带tomcat-native.war.gz,不过其版本相对于yum安装的apr过高,configure的时候会报错。

解决:yum remove apr apr-devel –y,卸载yum安装的apr和apr-devel,下载最新版本的apr源码包,编译安装;或者下载低版本的tomcat-native编译安装

安装成功后还需要对tomcat设置环境变量,方法是在catalina.sh文件中增加1行:

CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

#apr下载地址:http://apr.apache.org/download.cgi

#tomcat-native下载地址:http://tomcat.apache.org/download-native.cgi

修改8080端对应的conf/server.xml

protocol="org.apache.coyote.http11.Http11AprProtocol"

<Connector executor="tomcatThreadPool"
port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="20000"
enableLookups="false"
redirectPort="8443"
URIEncoding="UTF-8" />

PS:启动以后查看日志 显示如下表示开启 apr 模式

Sep 19, 2016 3:46:21 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-apr-8081"]

http://blog.csdn.net/linuxnews/article/details/52724604

时间: 2024-12-15 01:41:47

tomcat 配置及优化的相关文章

tomcat配置和优化

介绍 1.tomcat是一个解析jsp程序的软件 2.jdk用来编译 3.Apache是一个web服务器环境程序,启用它可以作为web服务器使用不过只支持静态网页,不支持动态网页,如asp.jsp.php.cgi 4.如果要在Apache环境下运行jsp就需要一个解释器来执行jsp网页,而这个jsp解释器就是Tomcat 5.那为什么还要JDK呢?因为jsp需要连接数据库的话就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK tomcat

Tomcat配置安全优化

1.删除默认目录 安装完tomcat后,删除$CATALINA_HOME/webapps下默认的所有目录文件 rm -rf /usr/local/tomcat/webapps/* 2.用户管理 如果不需要通过web部署应用,建议注释或删除tomcat-users.xml下用户权限相关配置 <!--   <role rolename="tomcat"/>   <role rolename="role1"/>   <user user

tomcat配置及优化

jdk安装 su - root mkdir jdk cd jdk wget https://mirror.its.sfu.ca/mirror/CentOS-Third-Party/NSG/common/x86_64/jdk-7u76-linux-x64.rpm rpm -ivh jdk-7u76-linux-x64.rpm 环境变量 vi /etc/profile export JAVA_HOME=/usr/java/jdk1.7.0_76 export CLASSPATH=$JAVA_HOME

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

Nginx与Tomcat安装、配置与优化

Nginx与Tomcat安装.配置与优化 Nginx的安装与使用 Nginx是一款优秀的反向代理服务器 安装: rpm(或者是pkg安装),是预编译好的程序包安装 yum(或者apt-get)安装,自动联网下载安装包,自动管理依赖关系 编译安装 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel configure make && make install 启动.停止.重启: 安

优化tomcat配置(从内存、并发、缓存4个方面)优化

Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数. JAVA_OPTS参数说明 -server 启用jdk 的 server 版: -Xms Java虚拟机初始化时的最小内存: -Xmx java虚拟机可使用的最大内存: -XX: PermSize 内存永久保留区域 -XX:MaxPermSize 内存最大永久保留区域 服务器参数配置 现公司服务器内存一般都可以加到最大2

tomcat的配置和优化

tomcat的内存使用配置,最大连接数配置.如何修改配置呢,在/tomcat的/bin/下面有个脚本文件catailna.sh. 如果 windows 是bat设置tomcat的使用内存,其实就是设置jvm的使用参数. 一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 JAVA_OPTS 参数. 1.JAVA_OPTS参数说明 Java代码 -server  启用jdk 的 server 版:

Tomcat 5常用优化和配置

Tomcat 5常用优化和配置 1.JDK内存优化:Tomcat默认可以使用的内存为128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置:JAVA_OPTS='-Xms[初始化内存大小] -Xmx[可以使用的最大内存] 一般说来,你应该使用物理内存的 80% 作为堆大小.2.连接器优化:在tomcat配置文件server.xml中的配置中,和连接数相关的参

如何优化tomcat配置(从内存、并发、缓存4个方面)优化

一.Tomcat内存优化 Tomcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置 java_OPTS 参数.  JAVA_OPTS参数说明  -server 启用jdk 的 server 版:  -Xms java虚拟机初始化时的最小内存:  -Xmx java虚拟机可使用的最大内存:  -XX: PermSize 内存永久保留区域  -XX:MaxPermSize 内存最大永久保留区域  服务器参数配置 现公司服务器内存一