1、tomcat安全

1)删除原webapps下的ROOT下所有内容(这个是tomcat管理工具的东西,没有必要保留) 2)禁用tomcat管理(tomcat8默认是禁用的) 3)降权启动(可以使用tomcat用户启动,需要catalina.sh修改) 注意:严格遵守目录755和文件644 bin、conf、lib、webapps给予root用户,有时候需要给conf目录tomcat用户权限,因为在启动时会有配置文件的创建 tmp、logs、work目录给予tomcat用户(用户存放临时文件) 4)关闭war包自动部署(防止被植入病毒) server.xml文件修改:unpackwars="false" autoDeploy="false" 5)关闭不必要的端口: 8005端口可以进行禁止(一般将端口设置为-1)或者将shutdown字段更改为其他。 使用了nginx+tomcat,请关闭8009端口, 如果使用了apache+tomcat,请关闭8080端口。 6)禁止目录列表(tomcat7和8默认是禁止的) 7)tomcat和jdk最好版本统一 8)tomcat隐藏版本号,一种是curl命令,一种是浏览器返回信息,这两种都需要隐藏。

2、tomcat性能调整

1)一般而言JDK版本越高,性能也会越好,开发新项目最好使用较新的jdk版本 2)内存优化 说道内存的优化,主要是针对tomcat的启动参数优化,tomcat的启动脚本:catalina.sh 通过在这个脚本中设置JAVA_OPTS参数,来实现tomcat性能的调优 下面对参数进行一个总结: -server 启用JDK的server版,都要加上这个参数 -Xms java虚拟机初始化时最小的内存(堆内存) -Xmx java虚拟机可以使用的最大的内存(堆内存) -XX:PermSize=512m 内存永久保留区(堆栈)tomcat版本不同,参数不同 -XX:MaxPermSize=512m 内存最大永久保留区(堆栈)tomcat版本不同,参数不同 生产环境中一般情况将xms和xmx设置为一样大,这样不用再让系统再分配内存给java虚拟机,一般设置为系统的70%。这个是不是硬性规定的,这个还要看你的项目及系统多少内存,最好使用监控用来定位。 -Xss 128k 设置每个线程的堆栈大小为128k。 -XX:NewRatio=4 设置年轻代和老年代的比值为4 -XX:SurvivorRatio=4 设置年轻代中Eden区和Survivor区大小比为4 -XX:MaxTenuringThreshold=0 设置垃圾最大年龄为0 -XX:+UseParalleIGC 选择垃圾收集器为并行收集器 -XX:ParalleIGCThreads=8 配置并行收集器的线程数 -XX:+UseParallelOldGC 配置年老带垃圾收集方式为并行收集 -XX:+UseAdaptiveSizePolicy 并行收集器会自动选择年轻代区大小和相应的Survivor区比例,已达到目标系统规定的最低响应时间见或者收集频率等,此值建议使用并行收集器时,一直打开。 3)连接池 (可以多个tomcat公用一个连接池)以下是个案例: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="100" prestartminSpareThreads="true" maxQueueSize="100" /> name是线程池的名字,maxprefix:线程前缀 maxThreads:最大连接数 minSpareThreads:初始化时线程数 prestartminSpareThreads:true,如果为false,则minSpareThreads无效 maxQueueSize:队列数(5.5版本以前),acceptCount:最大队列数 其中和最大连接数相关的参数为maxThreads和acceptCount。如果要加大并发连接数,应同时加大这两个参数。 参考文章:https://tomcat.apache.org/tomcat-8.5-doc/config/server.html 关于各版本有所不同,需要另行查看 大神优化: https://blog.csdn.net/ystyaoshengting/article/details/47335873