欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tomcat7优化配置

程序员文章站 2022-06-14 19:58:08
...

原文地址,转载请注明出处: http://blog.csdn.net/qq_34021712/article/details/72857952     ©王赛超

首先配置tomcat管理员账户

conf/tomcat-users.xml下添加用户:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui,admin,manager-gui,manager"/>
Tomcat7优化配置

启用原始tomcat查看信息
Tomcat7优化配置
Tomcat7优化配置


tomcat的JVM内存优化


windows系统修改bin/catalina.bat文件设置参数(第一行)
set JAVA_OPTS=-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC

linux系统修改bin/catalina.sh文件参数(第一行)
JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1024m -Xmx2048m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC"

参数说明:
1、 -Dfile.encoding 默认文件编码
2、 -Xmx1024m  设置JVM最大可用内存为1024MB
3、 -Xms1024m  设置JVM最小内存为1024m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
4、 -XX:NewSize  设置年轻代大小
5、 -XX:MaxNewSize 设置最大的年轻代大小
6、 -XX:PermSize  设置永久代大小
7、 -XX:MaxPermSize 设置最大永久代大小
8、 -XX:NewRatio=4:设置年轻代(包括Eden和两个Survivor区)与终身代的比值(除去永久代)。设置为4,则年轻代与终身代所占比值为1:4,年轻代占整个堆栈的1/5
9、 -XX:MaxTenuringThreshold=0:设置垃圾最大年龄,默认为:15。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概论。
10、-XX:+DisableExplicitGC这个将会忽略手动调用GC的代码使得 System.gc()的调用就会变成一个空调用,完全不会触发任何GC,如果代码中需要手动GC,可以去掉此参数。


tomcat并发优化


tomcat的3种运行模式

1、 bio
默认的模式,性能非常低下,没有经过任何优化处理和支持.
2、 nio
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
3、 apr
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.

原始tomcat信息中可以看出,tomcat默认使用的是bio模式。(想具体了解的可以自行百度一下)

启动NIO模式(操作简单一些)

修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
Tomcat7优化配置Tomcat7优化配置

启动Apr模式(操作麻烦一些)linux环境下
安装依赖库
yum install apr-devel
yum install openssl-devel
yum install gcc
yum install make

安装apr动态库
APR需要三个组件:
1.apr-1.5.2.tar.gz
2.apr-util-1.5.2.tar.gz
3.tomcat-native.tar.gz tomcat的bin目录,已经有tomcat-native.tar.gz文件


将 apr-1.5.2.tar.gz和 apr-util-1.5.2.tar.gz 上传到/usr/local/目录。下载所需apr
#tar zxvf apr-1.5.2.tar.gz
#cd apr-1.5.2
#./configure
#make
#make install
会在/local生成apr目录, apr-1.5.2 的库安装在/usr/local/apr/lib目录。

#tar zxvf apr-util-1.5.2.tar.gz
#cd apr-util-1.5.2
#./configure --with-apr=/usr/local/apr    //配置指向apr-1.5.2的安装目录
#make
#make install

#cd /usr/local/tomcat/bin
#tar zxvf tomcat-native.tar.gz
#cd tomcat-native-1.1.33-src/jni/native
#./configure --with-apr=/usr/local/apr
#make
#make install


在环境变量中配置/etc/profile中加入
vi /etc/profile
#后面添加以下内容
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
export LD_RUN_PATH=$LD_RUN_PATH:/usr/local/apr/lib
#使profile生效,  
source /etc/profile

启动tomcat,看日志
Tomcat7优化配置


官方文档:http://tomcat.apache.org/tomcat-7.0-doc/apr.html


开启线程池

在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。避免频繁创建销毁线程。
修改server.xml

Tomcat7优化配置Tomcat7优化配置


重新启动tomcat查看信息

Tomcat7优化配置


Executor常用参数介绍

     maxThreads :线程池中最大的线程数,默认是200,我们一般设置为500到800。
     minSpareThreads :线程池中最少的线程数,默认是25。
     maxQueueSize :最大的等待队列数,超过则请求拒绝,默认Integer.MAX_VALUE
     prestartminSpareThreads :是否在启动时就生成 minSpareThreads 个线程,默认是false


Connector常用参数介绍

 
   executor:指向Executor元素的引用,连接器将使用这个executor
     protocol
                         设置协议来处理传入流量。默认值是 HTTP/1.1
                         org.apache.coyote.http11.Http11Protocol -阻塞式的Java连接器
                         org.apache.coyote.http11.Http11NioProtocol -不阻塞Java连接器
                         org.apache.coyote.http11.Http11AprProtocol的 -的APR / native 连接器

                         connectionTimeout :在将提交的请求URI行呈现之后,连接器将等待接受连接的毫秒数。使用值-1表示没有超时(即无限)。默认值是   

                         60000(60秒),但请注意,Tomcat的标准server.xml中,设置为20000(即20秒)

     redirectPort :如果该连接器支持非SSL请求,并且接收到的请求为满足安全约束需要SSL传输, Catalina 将自动将请求重定向到指定的端口号。

     enableLookups:若是你想request.getRemoteHost()的调用 履行,以便返回的长途客户端的实际主机名的DNS查询,则设置为true。设置为false时跳过

                               DNS查找,并返回字符串情势的IP地址(从而提高性能)。默认景象下,禁用DNS查找。

     maxPostSize :将被容器以FORM URL参数形式处理的最大长度(以字节为单位)的POST。通过设置此属性的值小于或等于0可以禁用该限制。如果没有指

                             定,该属性被设置为2097152(2兆字节)。

     URIEncoding :这将指定使用的字符编码,来解码URI字符。如果没有指定,ISO-8859-1将被使用。
     acceptCount :当所有线程都在使用时,传入连接请求的最大队列长度。当队列满时收到的任何请求将被拒绝。默认值是100。
     acceptorThreadCount :接收线程的进程数,默认为1。常用于多核CPU服务器中,当有很多非活跃连接时,也可增加其数值。
     disableUploadTimeout :此标志允许servlet容器在数据上传时使用不同的连接超时,通常较长。如果没有指定,该属性被设置为true,禁用上传超时。

     maxConnections:在任何给定的时间服务器接受并处理的最大连接数。当这个数字已经达到了,服务器将不会接受任何连接,直到连接的数量降到低于此

                                 值。基于             acceptCount的设置,操作系统可能仍然接受连接。

     SSLEnabled :在连接器上使用此属性来启用SSL加密传输。如果要打开SSL握手/加密/解密,请设置true。默认值是false。

更多参数介绍,可以查看tomcat的Configuration

Tomcat7优化配置