阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Tomcat 8.5 安全配置与高并发优化

133次阅读
没有评论

共计 4367 个字符,预计需要花费 11 分钟才能阅读完成。

通常我们在生产环境中,Tomcat 的默认配置显然不能满足我们的产品需求,所以很多时候都需要对 Tomcat 的配置进行调优,以下综合我自己的经验来配置 Tomcat 安全与优化情况,如果你有更好的方案,请留言,我会参考并加纳进去。

关于 Java JDK JRE 的安装配置,请阅读《Linux JAVA JDK JRE 环境变量安装与配置 》篇。
关于 Tomcat 的安装,请阅读《Linux Apache Tomcat 8.5 安装与配置》篇。

1. 编辑修改配置文件:

# vim /usr/program/tomcat8/conf/server.xml

2. 禁用 8005 端口

telnet localhost 8005 然后输入 SHUTDOWN 就可以关闭 Tomcat,为了安全我们要禁用该功能

默认值:

<Server port="8005" shutdown="SHUTDOWN">

修改为:

<Server port="-1" shutdown="SHUTDOWN">

3. 应用程序安全 & 关闭自动部署

默认值:

<Host name="localhost" appBase="webapps"
 unpackWARs="true" autoDeploy="true">

修改为:

<Host name="localhost" appBase="webapps"
 unpackWARs="false" autoDeploy="false" reloadable="false">

4.maxThreads 连接数限制修改配置

默认值:

<!--
 <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
 maxThreads="150" minSpareThreads="4"/>
 -->

修改为:

<Executor
 name="tomcatThreadPool"
 namePrefix="catalina-exec-"
 maxThreads="500"
 minSpareThreads="30"
 maxIdleTime="60000"
 prestartminSpareThreads = "true"
 maxQueueSize = "100"
/>

参数解释:

maxThreads:最大并发数,默认设置 200,一般建议在 500 ~ 800,根据硬件设施和业务来判断
minSpareThreads:Tomcat 初始化时创建的线程数,默认设置 25
maxIdleTime:如果当前线程大于初始化线程,那空闲线程存活的时间,单位毫秒,默认 60000=60 秒 = 1 分钟。
prestartminSpareThreads:在 Tomcat 初始化的时候就初始化 minSpareThreads 的参数值,如果不等于 true,minSpareThreads 的值就没啥效果了
maxQueueSize:最大的等待队列数,超过则拒绝请求

5.Connector 参数优化配置

默认值:

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

修改为:

 

<Connector
 executor="tomcatThreadPool"
 port="8080"
 protocol="org.apache.coyote.http11.Http11Nio2Protocol"
 connectionTimeout="60000"
 maxConnections="10000"
 redirectPort="8443"
 enableLookups="false"
 acceptCount="100"
 maxPostSize="10485760"
 maxHttpHeaderSize="8192"
 compression="on"
 disableUploadTimeout="true"
 compressionMinSize="2048"
 acceptorThreadCount="2"
 compressableMimeType="text/html,text/plain,text/css,application/javascript,application/json,application/x-font-ttf,application/x-font-otf,image/svg+xml,image/jpeg,image/png,image/gif,audio/mpeg,video/mp4"
 URIEncoding="utf-8"
 processorCache="20000"
 tcpNoDelay="true"
 connectionLinger="5"
 server="Server Version 11.0"
 />

参数解释:

protocol:Tomcat 8 设置 nio2 更好:org.apache.coyote.http11.Http11Nio2Protocol
protocol:Tomcat 6 设置 nio 更好:org.apache.coyote.http11.Http11NioProtocol
protocol:Tomcat 8 设置 APR 性能飞快:org.apache.coyote.http11.Http11AprProtocol 更多详情:《Tomcat 8.5 基于 Apache Portable Runtime(APR)库性能优化
connectionTimeout:Connector 接受一个连接后等待的时间(milliseconds),默认值是 60000。
maxConnections:这个值表示最多可以有多少个 socket 连接到 tomcat 上
enableLookups:禁用 DNS 查询
acceptCount:当 tomcat 起动的线程数达到最大时,接受排队的请求个数,默认值为 100。
maxPostSize:设置由容器解析的 URL 参数的最大长度,-1(小于 0) 为禁用这个属性,默认为 2097152(2M) 请注意,FailedRequestFilter 过滤器可以用来拒绝达到了极限值的请求。
maxHttpHeaderSize:http 请求头信息的最大程度,超过此长度的部分不予处理。一般 8K。
compression:是否启用 GZIP 压缩 on 为启用(文本数据压缩)off 为不启用,force 压缩所有数据
disableUploadTimeout:这个标志允许 servlet 容器使用一个不同的, 通常长在数据上传连接超时。如果不指定, 这个属性被设置为 true, 表示禁用该时间超时。
compressionMinSize:当超过最小数据大小才进行压缩
acceptorThreadCount:用于接受连接的线程数量。增加这个值在多 CPU 的机器上, 尽管你永远不会真正需要超过 2。也有很多非维持连接, 您可能希望增加这个值。默认值是 1。
compressableMimeType:配置想压缩的数据类型
URIEncoding:网站一般采用 UTF- 8 作为默认编码。
processorCache:协议处理器缓存的处理器对象来提高性能。该设置决定多少这些对象的缓存。- 1 意味着无限的, 默认是 200。如果不使用 Servlet 3.0 异步处理, 默认是使用一样的 maxThreads 设置。如果使用 Servlet 3.0 异步处理, 默认是使用大 maxThreads 和预期的并发请求的最大数量(同步和异步)。
tcpNoDelay:如果设置为 true,TCP_NO_DELAY 选项将被设置在服务器套接字, 而在大多数情况下提高性能。这是默认设置为 true。
connectionLinger:秒数在这个连接器将持续使用的套接字时关闭。默认值是 -1, 禁用 socket 延迟时间。
server:隐藏 Tomcat 版本信息,首先隐藏 HTTP 头中的版本信息

6. 隐藏或修改 Tomcat 版本号

# cd /usr/local/tomcat/lib/
 # unzip catalina.jar
 # cd org/apache/catalina/util
 # vim ServerInfo.properties
server.info=Apache Tomcat/8.5.16
 server.number=8.5.16.0
 server.built=Jun 21 2017 17:01:09 UTC

将以上去掉或修改版本号即可。

7. 删除禁用默认管理页面以及相关配置文件

# rm -rf /usr/local/apache-tomcat-8.5.16/webapps/*
 # rm -rf /usr/local/apache-tomcat-8.5.16/conf/tomcat-users.xml

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04 下安装 Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04 安装 Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat 配置文件 server.xml 详解  http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat 单机多实例部署 - 多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149294.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4367字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中