Tomcat7优化配置
原文地址,转载请注明出处:
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"/>
启用原始tomcat查看信息
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
启动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,看日志
官方文档:http://tomcat.apache.org/tomcat-7.0-doc/apr.html
开启线程池
在tomcat中每一个用户请求都是一个线程,所以可以使用线程池提高性能。避免频繁创建销毁线程。修改server.xml
重新启动tomcat查看信息
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
下一篇: IOS学习笔记(五)