linux tomcat优化配置_详解linux下jvm优化、tomcat调优

系统环境:jdk1.8,apache-tomcat-8.5.35


jvm优化

进入 bin/catalina.sh,修改JAVA_OPTS配置:

JAVA_OPTS="-server -Xms8192M -Xmx8192M -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:ParallelGCThreads=8 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/javamemorylogs/dump -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/usr/local/javamemorylogs/gclog -XX:+DisableExplicitGC"

eae227b5217e882cae4f1958d10826f4.png

各参数含义:

(1)-server:表示这是应用于服务器的配置,JVM 内部会有特殊处理的 。

(2)-Xms8192m:设置JVM最小内存。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。

(3)-Xmx8192m:设置JVM最大可用内存。

(4):-XX:NewRatio=4:设置年轻代(包括 Eden 和两个 Survivor 区)与终身代的比值(除去永久代)。设置为 4,则年轻代与终身代所占比值为 1:4,年轻代占整个堆栈的 1/5 。

(4)-XX:SurvivorRatio=8:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:8,表示Eden:Survivor=8:2,一个Survivor区占整个年轻代的1/10。

(5)-XX:+UseConcMarkSweepGC:CMS收集,设置年老代为并发收集。它的主要适合场景是对响应时间的重要性需求大于对吞吐量的需求,能够承受垃圾回收线程和应用线程共享CPU资源,并且应用中存在比较多的长生命周期对象。CMS收集的目标是尽量减少应用的暂停时间,减少Full GC发生的几率,利用和应用程序线程并发的垃圾回收线程来标记清除年老代内存。

(6)-XX:ParallelGCThreads=8:表示JVM在进行并行GC的时候,用于GC的线程数。

(7)-XX:+HeapDumpOnOutOfMemoryError:可以让JVM在出现内存溢出时候Dump出当前的内存转储快照。

(8)XX:HeapDumpPath:生成DUMP文件的路径,如不设置,默认存储在jvm 运行环境目录。

(9)-XX:+PrintGCDetails:打印GC详细信息。

(10)-XX:+PrintGCDateStamps:记录GC日志并不会特别地影响Java程序性能,推荐你尽可能记录日志。

(11)-Xloggc:指定GC log的位置,以文件输出。帮助开发人员分析问题。

(12)-XX:+DisableExplicitGC:这个将会忽略手动调用 GC 的代码使得 System.gc() 的调用就会变成一个空调用,完全不会触发任何 GC。


tomcat优化

1.修改conf/server.xml如下两段配置:

maxThreads="700" minSpareThreads="100" maxSpareThreads="400" prestartminSpareThreads = "true" maxQueueSize = "300"/>

port="80"

protocol="org.apache.coyote.http11.Http11Nio2Protocol"

acceptCount="500"

connectionTimeout="20000"

redirectPort="8443"

compression="on"

disableUploadTimeout="true"

compressionMinSize="2048"

acceptorThreadCount="2" compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"

URIEncoding="utf-8"

enableLookups="false"

useURIValidationHack="false"

maxConnections="1000"

tcpNoDelay="true"

/>

58ef93fbb8ddd404f8572f0be8fb5f50.png

重点参数解释:

(1)maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断

(2)minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25

(3)prestartminSpareThreads:在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了

(4)maxQueueSize:最大的等待队列数,超过则拒绝请求

(5)acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,默认设置 100

(6)maxConnections:服务器在任何给定时间将接受和处理的最大连接数。当达到这个数字时,服务器将接受,但不处理另一个连接。这个额外的连接将被阻塞,直到正在处理的连接数量低于maxConnections,此时服务器将开始接受并再次处理新的连接。请注意,一旦达到限制,操作系统仍然可以接受基于acceptCount设置的连接。默认值因连接器类型而异。对于BIO,默认值是maxThreads的值,除非使用Executor,在这种情况下,默认值将是执行者的maxThreads的值。对于NIO和NIO2,默认值为10000.对于APR/native,默认值为8192。简单来说就是nio使用maxConnections代替maxThreads。

(7)enableLookups:禁用DNS查询

2.关闭shutdown端口

shown端口是写在Server参数里的,直接去掉是不管用,也是会默认启动的,一般在安全设置时候建议把端口修改为其他端口,shutdown修改为其他复杂字串。实际上这个端口是可以直接屏蔽不监听的。设置时候将其port值修改为-1即可:

83b15550a5a7bdcb0880afb1d1b12ee4.png

3、禁用tomcat Manager管理入口

为防止从tomcat web管理界面上传文件,破坏运行环境,可以手动删除tomcat自带的管理界面。

进入tomcat默认页面时有“server status”、“manager app”、“Host manager”。

bffbf5600b7946a555ec155a758c7cda.png

如果修改conf/tomcat-users.xml,配置后:

fe4d4c28988be86583b180827762d68d.png

访问tomcat web页面,用上面配置的用户名密码登录将会出现如下界面,一旦用户名密码泄露或被攻击,服务器很容易被破坏。

Server Status

3fbf8cace6ce7e43b4979c877997c588.png

Manager App

802550d30db8cb3d924f11e6300daa78.png

Host Manager

cbceb260e479bbb92028a72bd5f3574c.png

避免如上界面入口引发问题,操作如下:

1、进入tomcat/webapps目录

2、只保留manager,ROOT,以及项目相关文件,删除其他包含docs、examples、host-manager文件(rm -rf 目录名称),如果怕出错,请先备份要删除的文件。

2e16a6ce5f07d2cc016f10e7c6400b08.png

重新启动tomcat后,Tomcat Manager Web将如下:

Server Status

03f85e78262ca0e5eba606c6fb7652c9.png

Manager App

daacd1f7b02157b0543fee2383a05bba.png

Host Manager

59abc991324c810979cb897d6f3df648.png

恭喜!优化设置到此结束,赶紧尝试一下吧!


以上就是本文所有内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。后面小编会分享更多运维方面的干货,感兴趣的朋友走一波关注哩~

4830a7bba3c66f2116541b8d4941d76f.gif
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值