首页 > 其他分享 >tomcat优化

tomcat优化

时间:2022-09-05 09:12:34浏览次数:60  
标签:xml catalina tomcat jar server 线程 优化

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

相关文章

  • Tomcat是什么?干嘛用的?(最通俗易懂的讲解)
    Tomcat是什么?干嘛用的?本文可能是最通俗易懂的讲解了!!!一、什么是tomcat?Tomcat是常见的免费的web服务器。Tomcat这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立......
  • leetcode 674 最长连续递增序列 C/C++ 动态规划,动态规划空间优化,双指针 三种解法,初识
    #if 0class Solution {  //动态规划public:    int findLengthOfLCIS(vector<int>& nums) {        vector<int> dp(nums.size());     ......
  • DataBase - Insert into 优化
    优化一<insertid="insertUser">insertintosys_user(<iftest="userId!=nullanduserId!=0">user_id,</if><iftest="deptId!=nullanddeptId!=......
  • 堆优化dijkstra的两种写法
    例题:https://www.acwing.com/problem/content/description/1131/1、仅用dis数组记录,出队时记录最小距离#include<bits/stdc++.h>#definefore(x,y,z)for(LLx=(y);......
  • Java-tomcat
    TomcatTomcat是一个免费的web服务器8080是tomcat的默认端口号(手动可更改)下载tomcat后各个文件的作用:bin:一些初始化脚本conf:配置文件lib:依赖的jar包logs:日志web......
  • Linux上安装tomcat
    参考https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-centos-7,原文中是单独创建了tomcat账号来运行tomcat,我这边因为自己使用,为方便......
  • mysql索引优化
    一、分页查询优化很多时候我们业务系统实现分页功能可能会用如下sql实现:select*fromemployeeslimit10000,10;表示从表employees中取出从10001行开始的10行......
  • 响应式模版移动优化
    本文重点介绍做SEO响应式模版移动优化:响应式模版是指只有一套模版,pc和手机端共用一套模版,模版可根据浏览窗口自适应,只有一个www的连接。 响应式模版优化需做以下几点:1......
  • Centos7 常用优化脚本
    #!/bin/bash#服务器一键优化工具functiondefine_check_network(){echo主机名为`hostname-f`pingwww.baidu.com-c6}functiondefine_yum(){#......
  • 性能优化 1 - 减小 Bundle 大小(React、Webpack、Minify、代码拆分)
    性能优化1-减小Bundle大小(React、Webpack、Minify、代码拆分)Photoby杰克逊·西默on不飞溅优化JavaScript和React性能的方法之一是尽可能减小通过Webpac......