tomcat优化

tomcat

内存优化

在文件tomcat_home/bin/catalina.sh的前面,增加如下设置

​ linux修改TOMCAT_HOME/bin/catalina.sh,在cygwin=false之上加入

JAVA_OPTS='-Xms1024m -Xmx2048m -XX: PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'

​ windows修改TOMCAT_HOME/bin/catalina.bat,在前面加入

set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms512m -Xmx1024m

JAVA_OPTS参数说明
-server 启用jdk的server版;   
-Xms java虚拟机初始化时的最小内存;  
-Xmx java虚拟机可使用的最大内存;  
-XX: PermSize 内存永久保留区域   
-XX:MaxPermSize 内存最大永久保留区域

线程优化

<Connector port="80" protocol="HTTP/1.1" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700" connectionTimeout="20000" redirectPort="8443" />

maxThreads="600" ///最大线程数
minSpareThreads="100"///初始化时创建的线程数
maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount="700"//指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理

enableLookups :是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
redirectPort: 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount: 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout: 连接超时
minProcessors: 服务器创建时的最小处理线程数
maxProcessors: 服务器同时最大处理线程数

这里是http connector的优化,如果使用apache和tomcat做集群的负载均衡,并且使用ajp协议做apache和tomcat的协议转发,那么还需要优化ajp connector。

<Connector port="8009" protocol="AJP/1.3" maxThreads="600" minSpareThreads="100" maxSpareThreads="500" acceptCount="700"  connectionTimeout="20000" redirectPort="8443" />

由于tomcat有多个connector,所以tomcat线程的配置,又支持多个connector共享一个线程池。

首先。打开/conf/server.xml,增加

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="20" maxIdleTime="60000" />

最大线程500(一般服务器足以),最小空闲线程数20,线程最大空闲时间60秒。

然后,修改<Connector ...>节点,增加executor属性,executor设置为线程池的名字:

<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1"  connectionTimeout="60000" keepAliveTimeout="15000" maxKeepAliveRequests="1"  redirectPort="443" />

可以多个connector公用1个线程池,所以ajp connector也同样可以设置使用tomcatThreadPool线程池。

压缩优化参数

<Connector port="9027"
protocol="HTTP/1.1"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
connectionTimeout="20000"
URIEncoding="utf-8"
acceptCount="1000"
redirectPort="8443"
disableUploadTimeout="true"/>

●compression=“on” 打开压缩功能
●compressionMinSize="2048"启用压缩的输出内容大小,默认为2KB
●noCompressionUserAgents=“gozilla,traviata” 对于以下的浏览器,不启用压缩
●compressableMimeType=“text/html,text/xml,text/javascript,text/css,text/plain” 哪些资源类型需要压缩

禁用DNS查询

修改server.xml文件中的Connector元素,修改属性enableLookups参数值: enableLookups="false"

设置session过期时间

conf\web.xml中通过参数指定:

    <session-config>   
        <session-timeout>180</session-timeout>     
    </session-config> 
单位为分钟。

工作模式改为NIO模式

修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol

隐藏tomcat版本

找到本地项目路径下的jar包 
$TOMCAT_HOME/lib/catalina.jar

解压jar包 
 jar uf catalina.jar  org/apache/catalina/util/ServerInfo.properties 
 #只解出ServerInfo.properties,只有它是显示信息的
 
编辑tomcat版本信息
vim org/apache/catalina/util/ServerInfo.properties
#下面三行为需要修改信息
server.info=Apache Tomcat/8.5.47
server.number=8.5.47.0
server.built=Oct 7 2019 13:30:46 UTC

把文件放回去
jar uf catalina.jar  org/apache/catalina/util/ServerInfo.properties
conf/server.xml文件中,为connector元素添加server=" "
注意不是空字符串,是空格组成的长度为1的字符串
<Connector port="8080" protocol="HTTP/1.1"
 connectionTimeout="20000" redirectPort="8443" server=" "/>
jar命令
解压
jar -xvf a.jar
压缩
jar -cvf a.jar file1 file2 

删除webapps下面的所有代码

关闭war自动部署

conf/server.xml host标签关闭war自动部署unpackWARs=”false” autoDeploy=”false”。
防止被植入木马等恶意程序

更改关闭 Tomcat 实例的指令

server.xml中

<Server port="-1" shutdown="9SDKJ29jksjf23sjf0LSDF92JKS9DKkjsd">

更改 Tomcat 的服务监听端口

<Connector port="8080" address="127.0.0.1" />

降权启动

新建普通用户--》更改文件夹所属组--》普通用户启动tomcat

tomcat三个端口号的作用

8080 : 用于监听浏览器转发过来的请求
8005: 关闭tomcat通信的端口。 这个端口负责监听关闭tomcat的请求
8009 接受其他服务器转发过来的请求。

还有个端口也需要知道: 8443

8443 如果发送过来的是https请求,就将请求转发到8443端口上去

posted @   yy9knsg  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示