java -Xms512m -Xmx512m -jar my.jar
Tomcat默认的配置已经是经过优化的了,留给我们可优化的空间很小,我 们主要能调整的是:跟具体使用场景相关的设置,大致有:
1:合理分配Tomcat需要的内存 这个是在启动Tomcat的时候设置catalina.sh中的JAVA_OPTS,常见设置如下:
(1)-server:启用JDK的Server版
(2)-Xms:虚拟机初始化时的最小内存
(3)-Xmx:虚拟机可使用的最大内存(建议到物理内存的80%)
(4)-XX:PermSize:持久代初始值
(5)-XX:MaxPermSize:持久代最大内存(默认是32M)
(6)-XX:MaxNewSize:新生代内存的最大内存(默认是16M)
说明:
(1)一般设置-Xms、-Xmx相等以避免在每次GC后调整堆的大小。因为默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制
(2)察看配置是否生效:jmap -heap tomcat的进程号
2:Tomcat本身的配置优化 在server.xml中的 <Connector>中配置,常见设置如下:
(1)maxConnections :最大连接数,对BIO模式,默认等于maxThreads ;对NIO默认10000; 对APR/native默认8192
(2)maxThreads:最大线程数,即同时处理的任务个数,默认值为200
(3)acceptCount:当处理任务的线程数达到最大时,接受排队的请求个数,默认100
(4)minSpareThreads:最小空闲线程数,默认10
(5)compression :设置是否开启GZip压缩
(6)compressableMimeType:哪些类型需要压缩,默认是text/html,text/xml,text/plain
(7)compressionMinSize:启用压缩的输出内容大小,默认为2048
(8)enableLookups:是否反查域名,为了提高处理能力,应设置为 false
(9)connectionTimeout:网络连接超时,单位毫秒。设置为 -1 表示永不超时,通常可设置 为2000毫秒。
说明:
(1)如果要加大并发连接数,应同时加大maxThreads和acceptCount,可以两个设置一样
(2)WebServer允许的最大连接数还受制于操作系统的内核参数设置,可通过ulimit -a 查看
(3)如果配置了<Executor>,在<Connector>中通过executor属性指定参照<Executor>,那么 <Connector>中关于线程的配置失效,以<Executor>中配置为准
3:关于BIO/NIO/APR
(1)BIO是最稳定最老的一个连接器,是采用阻塞的方式,意味着每个连接线程绑定到每个 Http请求,直到获得Http响应返回,如果Http客户端请求的是keep-Alive连接,那么这些 连接也许一直保持着直至达到timeout时间,这期间不能用于其它请求。
(2)NIO是使用Java的异步IO技术,不做阻塞,要使用的话,直接修改server.xml里的 Connector节点,修改protocol为 : protocol="org.apache.coyote.http11.Http11NioProtocol"
(3)APR是使用原生C语言编写的非堵塞I/O,但是需要安装apr和native,直接启动就支持 apr,能大幅度提升性能。使用时指定protocol为 protocol=“org.apache.coyote.http11.Http11AprProtocol” 。 可以到http://apr.apache.org/download.cgi去下载,大致的安装步骤如下:
A:安装apr ./configure --prefix=/usr/local/apr make make install
B:安装apr-iconv ./configure --prefix=/usr/local/apr-iconv --with-apr=/usr/local/apr
make make install
C:安装apr-util ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-apr- iconv=/usr/local/apr-iconv/bin/apriconv make make install
D:安装tomcat-native ,就在Tomcat的bin下自带 tar zxvf tomcat-native.tar.gz cd tomcat-native-1.1.29-src/jni/native ./configure --with-apr=/usr/local/apr make make install
E:设置 apr 的环境变量 进入Tomcat的bin路径下,打开catalina.sh,在文件的#!/bin/sh下添加如下内容: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib export LD_LIBRARY_PATH 这样就只是给这个TOMCAT添加了APR,不破坏其它TOMCAT的配置 G:重新启动Tomcat,查看日志信息,应该有类似如下的信息: org.apache.catalina.core.AprLifecycleListener.init Loaded APR based Apache Tomcat Native library 1.1.29 using APR version 1.5.0.
优化主要是对Tomcat做的,主要有几方面:
1、在bin/catalina.bat文件中加入下面参数,对JVM进行优化,至于这一大驼参数的作用及说明,大家到网上找找,应该有很多的,如:http://www.mzone.cc/article/321.html
set JAVA_OPTS=
-server
-Xms1000M
-Xmx1000M #-Xms与-Xmx设成一样的值,避免JVM因为频繁的GC导致性能大起大落
-Xss512k
-XX:+AggressiveOpts
-XX:+UseBiasedLocking
-XX:PermSize=64M
-XX:MaxPermSize=300M
-XX:+DisableExplicitGC
-XX:MaxTenuringThreshold=31
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+CMSParallelRemarkEnabled
-XX:+UseCMSCompactAtFullCollection
-XX:LargePageSizeInBytes=128m
-XX:+UseFastAccessorMethods
-XX:+UseCMSInitiatingOccupancyOnly
-Djava.awt.headless=true
上述这样的配置,基本上可以达到:系统响应时间增快,JVM回收速度增快同时又不影响系统的响应率
,JVM内存最大化利用,线程阻塞情况最小化.
Tomcat连接参数的优化,主要是针对吞吐量做优化:
修改conf/server.xml文件,把原来
<Connector port="8080" protocol="HTTP/1.1" />
修改协议,修改最大线程,开启tomcat的gzip等等
改成下面的内容
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="1500"
maxThreads="1500"
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false"
compression="on"
compressionMinSize="1024"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"/>
Tomcat中Java垃圾收集调优(JVM垃圾收集器如何选择?):
http://blog.csdn.net/aisoo/article/details/8263841
长连接和短连接的性能测试:
http://blog.csdn.net/ystyaoshengting/article/details/49300003
tomcat长连接、短连接配置及用途:
http://blog.csdn.net/ystyaoshengting/article/details/49512069
什么时候用长连接,短连接?(下面博文最后面)
http://www.cnblogs.com/0201zcr/p/4694945.html
Tomcat的四种基于HTTP协议的Connector性能比较:
http://www.cnblogs.com/sunxucool/p/3227366.html
Tomcat 7优化前及优化后的性能对比:
http://my.oschina.net/lianss/blog/272230?fromerr=rcI9PseP#OSC_h2_1