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端口上去
标签:xml,catalina,tomcat,jar,server,线程,优化 From: https://www.cnblogs.com/yy9knsg/p/16656877.html