Tomcat优化

【传智播客.黑马程序员训练营成都中心】

Tomcat优化

为何要进行tomcat优化

随着电商的发展,高并发的问题已经越来越严重,在高并发的情况,无时无刻不考验着服务器性能的优化,高可用也成为了一个开发者所必备的知识点,作为一个程序的开发者,性能的优化通常有三大块 1、服务器优化 2、数据库优化 3、JVM优化,那么接下来咱们来研究研究tomcat的优化内容

tomcat的可视化视图说明和优化介绍

JVM优化分为三块: 1. JVM参数优化 2.JVM高并发优化 3.JVM启动优化
1.当我们在在linux环境下启动了tomcat,在屏幕右上角有一个server status,我们需要在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的用户权限,以及用户名,密码
登陆完毕 ,可以看到JVM占有情况(Free memory: 51.70 MB Total memory: 95.75 MB Max memory: 419.50 MB)可以发现此时JVM所使用到的内容是linux虚拟机中的最大占有内存1/4 ,年轻代,年老代,永久带内存空间,为了让性能更加优越,除了可以进行tomcat自身优化,还可以进行在tomcat上进行JVM的调优,和当前tomcat的启动模式

tomcat优化一 catalina文件优化&&JVM优化

在tomcat的catalina.sh文件下
export JAVA_OPTS="-server -Xms1600M -Xmx1600M -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"

参数分析

-server: jdk的server版
只要你的tomcat运行在生产环境中的,这个参数必须添加
因为tomcat默认是以一种叫java -client 的模式来运行的,server即意味着你的tomcat是以真实的production的模式在运行的,这也意味着你的tomcat 会拥有更大,更高的并发处理能力,以及更强更敏捷的JVM垃圾回收机制,可以获得更多的负载与吞吐量

-Xms -Xmx :初始堆大小,和最大堆大小
在实际生产过程中JVM的堆内存一定要同样大,如果在一个区间,在最小内存时存在内存不足,此时触发GC,但此时若内存突然变大,GC将变得没有意义,所以在实际生产过程中需要不能将堆内存设置成空间值(默认是堆内存小于40%时,JVM将增大堆到-Xmx最大限制,空余堆大于70%时,会减少至-xms最小限制)

-Xss512k 调整栈大小,最好不要超过1M

AggressiveOpts:从单词上看是积极,生猛,将最新版的JDK优化后的新特性自动注入

UseBiasedLocking:启动了优化的线程锁,对于高并发访问很重要,太多请求忙不过来时,它就自动优化,对于各自长短不一的请求,排队,会自动进行优化

DisableExplicitGC:关闭明显的GC操作,避免内存的大起大落,忽略手动调用GC,使System.gc() 成为一个空调用

MaxTenuringThreshold: 设置新生代存活的次数
若年老代对象过多,可以将这个年龄设置为0 ,但通常不建议

-Djava.awt.headless=true:这个参数都是放在最后的,我们在J2EE工程中使用一些图标工具如:jfreechart,在web网页输出GIF、JPG流
在window环境下不会有问题,但在生产环境下可能会出现不显示,此时这个配置可以解决这个参数

tomcat优化二:启动模式优化 conf/server.xml

在server.xml中除了能修改端口号和编码集以外,还能进行一项非常重要的修改,启动模式!

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问题,大幅度的提高性能.

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

优化配置1:标准版(亲测有效)
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="600"
minSpareThreads="100"
maxSpareThreads="500"
acceptCount="700"
connectionTimeout="20000"
redirectPort="8843"/>

maxThreads:支持并发访问线程
minSpareThreads:最小备用线程,初始化默认是10
maxSpareThreads:最大备用线程
URIEncoding:编码集
enableLookups:当我们通过调用request.getRemoteHost()进行DNS查询时,期望返回客户实际主机名,将此属性设置为true ,但通常设置为false,节约性能

disableUploadTimeout disableUploadTimeout = true
是否需要对tomcat容器单独的设置上传时间

connectionTimeout:网络链接超时,单位毫秒,设置为-1表示用户超时
acceptCount:当线程达到了maxThreads后,后续将请求放置到一个等待队列中,这个acceptCount是这个队列的大小,若这个队列也满了,就直接refuse connection ,默认是100
maxThreads :同时处理线程的能力,默认200 ,建议600-800
minProcessors:在java中线程是程序运行时的路径,是在一个程序中与其他控制线程无关的,能够独立运行的代码块,使空闲时间最低,充分利用cpu资源

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容