码迷,mamicode.com
首页 > 其他好文 > 详细

tomcat优化

时间:2018-03-14 17:04:12      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:tomcat

从两方面入手
1. tomcat启动参数
打开\tomcat\bin\catalina.sh
export JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:PermSize=128M -XX:MaxPermSize=256M -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内存最大化利用
线程阻塞情况最小化

参数解释:
-server Tomcat以server模式运行,将拥有更大、更高的并发处理能力,更快更强捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量,生产环境必须加上。
-Xms –Xmx 一般设置这里两个值相等
–Xmn 年轻代[Sun官方推荐配置为整个堆的3/8]
-Xss 指设定每个线程的堆栈大小 一般是128k或者256k
-XX:+AggressiveOpts 启用这个参数,则每当JDK版本升级时,你的JVM都会使用最新加入的优化技术(如果有的话)
-XX:+UseBiasedLocking 启用一个优化了的线程锁,我们知道在我们的appserver,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还会出现线程阻塞,这个优化了的线程锁使得你的appserver内对线程处理自动进行最优调配。
-XX:PermSize=128M 非堆的初始值[物理内存的1/64]
-XX:MaxPermSize=256M 非堆的最大值[物理内存的1/4]
-XX:+DisableExplicitGC 程序代码中不允许有显示的调用”System.gc()”
-XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快。
-XX:+UseConcMarkSweepGC 即CMS gc 我们知道频频繁的GC会造面JVM的大起大落从而影响到系统的效率,因此使用了CMS GC后可以在GC次数增多的情况下,每次GC的响应时间却很短,比如说使用了CMS GC后经过jprofiler的观察,GC被触发次数非常多,而每次GC耗时仅为几毫秒。
-XX:MaxTenuringThreshold 设置垃圾最大年龄
-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间
-XX:+UseCMSCompactAtFullCollection 在使用concurrent gc 的情况下, 防止 memoryfragmention, 对live object 进行整理, 使 memory 碎片减少
-XX:+UseFastAccessorMethods get,set 方法转成本地代码
-XX:LargePageSizeInBytes 指定 Java heap的分页页面大小


2. tomcat容器本身
打开tomcat安装目录\conf\server.xml文件,定位到这一行:
<connector port="8080" protocol="HTTP/1.1" <="" p="" style="word-wrap: break-word;">

URIEncoding="UTF-8"  minSpareThreads="25" maxSpareThreads="75"

# enableLookups="false" 消除DNS查询对性能的影响我们可以关闭DNS查询
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"

#acceptCount是当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小,如果这个队列也满了,就直接refuse connection
#maxProcessors="2000"一般设置为2000
acceptCount="300"  maxThreads="300" maxProcessors="2000" minProcessors="5"

#可以减少它对一些url的不必要的检查从而减省开销。
useURIValidationHack="false"  

#给Tomcat配置gzip压缩(HTTP压缩)功能
compression="on" compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

redirectPort="8443"

/>
最后8443端口建议也设置成此配置,因为https会走8443端口。

tomcat优化

标签:tomcat

原文地址:http://blog.51cto.com/5731674/2086790

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!