首页新闻动态正文

+ + tomcat优化【黑马java培训】

更新时间:2019年07月26日 10时55分35秒 来源:黑马程序员论坛



第一: 内存方面优化 Windows环境下,是tomcat解压版(执行startup.bat启动tomcat) ,解决办法:


修改“%TOMCAT_HOME%\bin\catalina.bat”文件,在文件开头增加如下设置:
[AppleScript] 纯文本查看 复制代码
set JAVA_OPTS=-Xms512m -Xmx512m
-XX:PermSize=128M -XX:MaxNewSize=256m
-XX:MaxPermSize=512m

备注:一定加在catalina.bat最前面。

Windows环境下,是tomcat安装版(利用windows的系统服务启动tomcat),解决办法:

修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun
2.0\Tomcat6\Parameters\JavaOptions

原值为:
[AppleScript] 纯文本查看 复制代码
-Dcatalina.home=E:\Tomcat 6.0

-Dcatalina.base=E:\Tomcat 6.0

-Djava.endorsed.dirs=E:\Tomcat 6.0\common\endorsed

-Djava.io.tmpdir=E:\Tomcat 6.0\temp

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager


-Djava.util.logging.config.file=E:\Tomcat
6.0\conf\logging.properties

加入:
[AppleScript] 纯文本查看 复制代码
Xms512m -Xmx512m -XX:PermSize=128M
-XX:MaxNewSize=256m -XX:MaxPermSize=512m


重起tomcat服务,设置生效。


Linux环境下, ,解决办法:
修改“%TOMCAT_HOME%\bin\catalina.sh”文件,在文件开头增加如下设置:JAVA_OPTS=’-Xms256m
-Xmx512m’

各参数详解:
[Bash shell] 纯文本查看 复制代码
-Xms:设置JVM初始内存大小(默认是物理内存的1/64)
-Xmx:设置JVM可以使用的最大内存(默认是物理内存的1/4,建议:物理内存80%)
-Xmn:设置JVM最小内存(128-256m就够了,一般不设置)


默认空余堆内存小于
40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、
-Xmx相等以避免在每次GC 后调整堆的大小。

在较大型的应用项目中,默认的内存是不够的,有可能导致系统无法运行。常见的问题是报Tomcat内存溢出错误“java.lang.OutOfMemoryError:
Java heap space”,从而导致客户端显示500错误。

-XX:PermSize :为JVM启动时Perm的内存大小
-XX:MaxPermSize :为最大可占用的Perm内存大小(默认为32M)
-XX:MaxNewSize,默认为16M
PermGen space的全称是Permanent Generation
space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen
space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage
Collection)不会在主程序运行期对PermGen
space进行清理,所以如果你的应用中有很CLASS的话,就很可能出现“java.lang.OutOfMemoryError:
PermGen space”错误。

对于WEB项目,jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小,为了避免调整),你可以使用更多的参数配置。如果你的WEB
APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小,那么就会产生此错误信息了。

其它参数:
-XX:NewSize :默认为2M,此值设大可调大新对象区,减少Full
GC次数
-XX:NewRatio :改变新旧空间的比例,意思是新空间的尺寸是旧空间的1/8(默认为8)
-XX:SurvivorRatio :改变Eden对象空间和残存空间的尺寸比例,意思是Eden对象空
间的尺寸比残存空间大survivorRatio+2倍(缺省值是10)
-XX:userParNewGC 可用来设置并行收集【多CPU】
-XX:ParallelGCThreads 可用来增加并行度【多CPU】
-XXUseParallelGC 设置后可以使用并行清除收集器【多CPU】


2.修改tomcat让其支持NIO

修改前:

protocol="HTTP/1.1"
connectionTimeout="20000" redirectPort="8443"/>

修改成支持NIO的类型,配置如下 :

protocol="org.apache.coyote.http11.Http11NioProtocol
" connectionTimeout="20000" redirectPort="8443" />

3.并发数设置

默认的tomcat配置,并发测试时,可能30个USER上去就当机了。

添加
[AppleScript] 纯文本查看 复制代码
maxThreads="600" //最大线程数

minSpareThreads="100" //初始化时创建的线程数

maxSpareThreads="500" //一旦线程超过这个值,Tomcat会关闭不需要的socket线程

acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到

处理队列中的请求数,超过这个数的请求将不予处理

connectionTimeout="20000"

redirectPort="8443" />

或者

name="tomcatThreadPool"
namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="400"
/>



executor="tomcatThreadPool"
port="80" protocol="HTTP/1.1" connectionTimeout="20000"
enableLookups="false"

redirectPort="8443" URIEncoding="UTF-8" acceptCount="1000"
/>



推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 产品经理培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程【点击播放】

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!