目的
现在Tomcat容器在企业中的应用还占据很高比例,如何对Tomcat优化配置,让其实现高并发的同时,安全也能兼顾呢。本篇就详细介绍Tomcat高并发和安全配置。
变量配置
设置 Tomcat 相关变量:
1 | vim bin/catalina.sh |
在配置文件的可编辑内容最上面(98 行开始),加上如下内容(具体参数根据你服务器情况自行修改):
1 | JAVA_HOME=/usr/program/jdk1.8.0_72 |
如果使用 shutdown.sh 还无法停止 tomcat,可以修改其配置:
1 | vim bin/shutdown.sh |
JVM 优化
Java 的内存模型分为:
1 | Young,年轻代(易被 GC)。Young 区被划分为三部分,Eden 区和两个大小严格相同的 Survivor 区,其中 Survivor 区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在 Young 区间变满的时候,minor GC 就会将存活的对象移到空闲的Survivor 区间中,根据 JVM 的策略,在经过几次垃圾收集后,任然存活于 Survivor 的对象将被移动到 Tenured 区间。 |
Linux 修改 bin/catalina.sh 文件,把下面信息添加到文件第一行。Windows 和 Linux 有点不一样的地方在于,在 Linux 下,下面的的参数值是被引号包围的,而 Windows 不需要引号包围。
如果服务器只运行一个 Tomcat
机子内存如果是 8G,一般 PermSize 配置是主要保证系统能稳定起来就行:
1 | JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms6144m -Xmx6144m -XX:NewSize=1024m -XX:MaxNewSize=2048m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC" |
机子内存如果是 16G,一般 PermSize 配置是主要保证系统能稳定起来就行:
1 | JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms13312m -Xmx13312m -XX:NewSize=3072m -XX:MaxNewSize=4096m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC" |
机子内存如果是 32G,一般 PermSize 配置是主要保证系统能稳定起来就行:
1 | JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms29696m -Xmx29696m -XX:NewSize=6144m -XX:MaxNewSize=9216m -XX:PermSize=1024m -XX:MaxPermSize=1024m -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -XX:+DisableExplicitGC" |
如果是开发机
1 | -Xms550m -Xmx1250m -XX:PermSize=550m -XX:MaxPermSize=1250m |
参数说明:
1 | -Dfile.encoding:默认文件编码 |
禁用8005端口
1 | vim conf/server.xml |
关闭自动部署
1 | 默认值: |
线程池限制
1 | 默认为注释: |
1 | 参数解释: |
连接器配置
1 | 默认值: |
1 | 参数解释: |
建议:压缩会增加Tomcat负担,最好采用Nginx + Tomcat 或者 Apache + Tomcat 方式,压缩交由Nginx/Apache 去做。
Tomcat 的压缩是在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的 浏览过程 HTML、CSS、Javascript和Text,它可以节省40% 左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP、JSP、ASP、Servlet,SHTML等输出的网页也能进行压缩,压缩效率也很高。
禁用 AJP
前提:如果你服务器没有使用 Apache或不用ajp
AJP是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供较高的通信速度和效率。如果tomcat前端放的是apache的时候,会使用到AJP这个连接器。 默认是开启的。如果不使用apache,注释该连接器。
1 | 把下面这一行注释掉,默认 Tomcat 是开启的。 |
隐藏或修改版本号
1 | cd /usr/local/tomcat/lib/ |
管理页面安全
1 | rm -rf /usr/local/apache-tomcat-8.5.16/webapps/* |