【Tomcat】

Tomcat 简介

Tomcat官网: http://tomcat.apache.org

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。并且Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

Tomcat:JAVA容器,WEB容器,WEB中间件

Tomcat 端口说明

1. HTTP端口(默认端口号为8080):

- HTTP端口是用于处理HTTP请求的端口。当浏览器发送HTTP请求时,会使用这个端口与Tomcat服务器通信。

- 默认情况下,Tomcat监听8080端口,可以通过在server.xml配置文件中的<Connector>元素来修改。

2. HTTPS端口(默认端口号为8443):【用咋不】

- HTTPS端口是用于处理HTTPS请求的端口。HTTPS是HTTP的安全版本,通过SSL/TLS加密传输数据。

- 默认情况下,Tomcat监听8443端口,可以通过在server.xml配置文件中的<Connector>元素来修改。

3. AJP端口(默认端口号为8009):

- AJP(Apache JServ Protocol)端口是用于与Apache HTTP服务器之间进行通信的端口。ajp协议。

- 默认情况下,Tomcat监听8009端口,可以通过在server.xml配置文件中的<Connector>元素来修改。

4. Shutdown端口(默认端口号为8005):

- Shutdown端口用于接收关闭Tomcat服务器的命令。当管理员想要停止Tomcat服务器时,可以通过连接到这个端口发送关闭命令。

- 默认情况下,Tomcat监听8005端口,可以通过在server.xml配置文件中的<Server>元素来修改。

使用方法:

Nginx+Tomcat //反向代理和负载均衡 ;nginx处理静态请求,tomcat处理动态请求

Tomcat的安装

1.环境部署:

安装时候选择tomcat软件版本要与程序开发使用的版本一致。jdk版本要进行与tomcat保持一致。

1. 查看系统版本
cat /etc/redhat-release 

2. 关闭防火墙
setenforce 0
systemctl disable --now firewalld

3. 安装JDK1.8环境
# 解压 jdk 压缩包到 /usr/local/
tar xzf jdk-8u211-linux-x64.tar.gz -C /usr/local/
# 改名:
mv /usr/local/jdk1.8.0_211/ /usr/local/java
# java加入环境变量:
vim /etc/profile.d/jdk.sh
# 添加:
#!/bin/
export JAVA_HOME=/usr/local/java/                    #指定java安装目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH  #用于指定java系统查找命令的路径

4. 加载变量
source /etc/profile.d/jdk.sh

5.验证
java -version

注意:在图形化操作系统,可能会出现网页无法打开情况,原因是PATH自带JDK。需要把PATH放到jdk1.8.0_211/bin后面,让系统优先搜索自己下载的JDK。

2.Tomcat安装

版本:apache-tomcat-8.5.45.tar.gz

1. 解压Tomcat安装包到指定目录
tar xfv apache-tomcat-8.5.45.tar.gz -C /usr/local
# 改名:
mv /usr/local/apache-tomcat-8.5.45/ /usr/local/tomcat

2. tomcat添加到环境变量:
vim /etc/profile.d/tomcat.sh
# 添加:
#!/bin/bash
export TOMCAT_HOME=/usr/local/tomcat/bin
export PATH=$PATH:$TOMCAT_HOME:$JAVA_HOME/bin

3. 重新加载配置文件
source  /etc/profile.d/tomcat.sh

4. 查看tomcat是否安装成功
catalina.sh version
catalina.sh start
ss -tunlp | grep java
8005: TOMCAT本身的端口
8080: TOMCAT负责建立HTTP连接,在通过浏览器访问TOMCAT服务器的Web应用时,使用的就是这个连接器
8009: TOMCAT负责和其他的HTTP服务器建立连接,如nginx和apache互通时使用

Using CATALINA_BASE: /usr/local/tomcat # 表示Tomcat实例的基础目录,即配置文件、日志文件等所在的目录路径。

Using CATALINA_HOME: /usr/local/tomcat # 表示Tomcat的安装目录,即Tomcat的主要程序文件所在的目录路径。

Using CATALINA_TMPDIR: /usr/local/tomcat/temp # 表示Tomcat的临时目录,用于存放临时文件和数据,比如会话数据、上传文件等。

Using JRE_HOME: /usr/local/java # 表示Java运行时环境(JRE)的安装目录,即Java解释器和标准类库所在的目录路径。

Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar # 表示Java类路径(CLASSPATH),用于指定Java程序运行时要加载的类库和目录。在这里指定了两个JAR文件,分别是bootstrap.jar和tomcat-juli.jar,这些JAR文件包含了Tomcat启动和日志相关的类。

Server version: Apache Tomcat/8.5.45 # 表示Tomcat服务器的版本信息,这里是Tomcat 8.5.45。

Server built: Aug 14 2019 22:21:25 UTC # 表示Tomcat服务器的构建时间,即Tomcat程序文件的编译时间。

Server number: 8.5.45.0 # 表示Tomcat服务器的具体版本号。

OS Name: Linux # 表示操作系统的名称,这里是Linux。

OS Version: 3.10.0-1160.el7.x86_64 # 表示操作系统的版本号。

Architecture: amd64 # 表示操作系统的体系结构,这里是64位的。

JVM Version: 1.8.0_211-b12 # 表示Java虚拟机(JVM)的版本信息。

JVM Vendor: Oracle Corporation # 表示Java虚拟机(JVM)的提供商,这里是Oracle Corporation。

3.Tomcat主目录介绍(/tomcat/)

cd /usr/local/tomcat
yum install -y tree
tree -L 1

├── bin           # 包含了Tomcat服务器的可执行文件,如启动和关闭脚本、管理脚本等。
├── BUILDING.txt	# 包含了关于如何构建Tomcat服务器的说明文档。
├── conf          # 包含了Tomcat服务器的配置文件,如服务器配置、日志配置、Web应用程序配置等。
├── CONTRIBUTING.md	# 包含了关于如何向Tomcat项目贡献代码的说明文档。
├── lib           # 包含了Tomcat服务器运行所需的Java类库文件。
├── LICENSE		    # 包含了Tomcat服务器的许可证文件。
├── logs          # 包含了Tomcat服务器的日志文件,记录了服务器的运行状态和事件信息。
├── NOTICE	    	# 包含了关于Tomcat服务器的版权和许可信息的通知文件。
├── README.md   	# 包含了Tomcat服务器的简要说明文档。
├── RELEASE-NOTES	# 包含了Tomcat服务器的发布说明文档,记录了每个版本的更新内容和改进。
├── RUNNING.txt		# 包含了关于如何运行Tomcat服务器的说明文档。
├── temp     			# 用于存放Tomcat服务器的临时文件,如会话数据、上传文件等。
├── webapps       # 用于存放Web应用程序的目录,每个子目录代表一个独立的Web应用程序
└── work          # 用于存放Tomcat服务器的工作目录,如编译的JSP文件、临时缓存等。

4.webapps目录介绍(/tomcat/webapps)

cd /usr/local/tomcat/webapps/
tree -L 1

├── docs      # 包含了Tomcat服务器的文档和示例文件,如用户手册、API文档等。
├── examples  # 包含了Tomcat服务器的示例应用程序,提供了一些简单的示例代码和演示。
├── host-manager  # 包含了Tomcat的主机管理应用程序,允许管理员通过Web界面管理虚拟主机。
├── manager   # 包含了Tomcat的应用程序管理应用程序,允许管理员通过Web界面管理部署在Tomcat上的Web应用程序
└── ROOT      # 是Tomcat服务器的默认根应用程序(也称为ROOT应用程序),即当用户访问Tomcat服务器时默认会加载的应用程序。通常用于展示Tomcat服务器的欢迎页面或其他默认内容。

5.配置文件目录介绍(/tomcat/conf)

cd /usr/local/tomcat/conf/
tree -L 1

├── Catalina            # s这个目录包含 Tomcat 的日志文件和工作目录
├── catalina.policy		  # Tomcat服务器的安全策略文件,用于定义安全策略和权限控制。
├── catalina.properties	# Tomcat服务器的全局配置文件,包含了一些Tomcat服务器的运行参数和属性设置。
├── context.xml		    	# Tomcat服务器的Web应用上下文配置文件,用于配置特定Web应用程序的上下文参数和资源定义。
├── jaspic-providers.xml# 配置了 Java 安全认证和授权的提供者
├── jaspic-providers.xsd# jaspic-providers.xml 的 XML Schema 定义文件
├── logging.properties	# Tomcat服务器的日志配置文件,用于配置日志记录器、日志格式和输出目的地等。
├── server.xml			    # Tomcat服务器的主配置文件,包含了服务器的核心配置,如端口设置、连接器配置、虚拟主机设置等。`
├── tomcat-users.xml  	# Tomcat服务器的用户认证配置文件,用于定义Tomcat服务器的用户、角色和访问权限。
├── tomcat-users.xsd	  # tomcat-users.xml 的 XML Schema 定义文件,用于验证Tomcat用户认证配置文件的结构和语法。		
└── web.xml			      	# 定义的Web应用程序配置文件,包含了Web应用程序的部署描述符,用于配置Servlet、过滤器、监听器等组件。

6.开启/关闭Tomcat

1. 启动Tomcat
catalina.sh start
2. 关闭Tomcat
catalina.sh stop
3. 检查
ss -tunlp  |grep java

注意:tomcat未启动的情况下使用shutdown脚本,会有大量的输出信息

启动完成浏览器进行访问
IP:8080

Tomcat主配置文件详解

server.xml 详解

  1. 顶级组件:位于整个配置的顶层,如server。
  2. 容器类组件:包含其它组件的组件,如service、engine、host、context。
  3. 连接器组件:连接用户请求至tomcat,如connector(引擎)。

vim /usr/local/tomcat/conf/server.xml

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.security.SecurityListener" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  • 第一行:xml版本信息,字符集
  • 第二行:port="8005":服务器监听关闭命令的端口。shutdown="SHUTDOWN":关闭服务器的命令字符串。
  • 第三至七行:记录Tomcat的版本信息。
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  • 第一行:Resource:配置一个全局的JNDI资源,这里定义了一个用户数据库资源
  • 第二行:name="UserDatabase":资源名称。auth="Container":认证方式为容器管理。
  • 第三行:type="org.apache.catalina.UserDatabase":资源类型。
  • 第四行:description:资源描述。
<Service name="Catalina">

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

  <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  <Engine name="Catalina" defaultHost="localhost">

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
      resourceName="UserDatabase"/>
  </Realm>
    
  <Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
      prefix="localhost_access_log" suffix=".txt"
      pattern="%h %l %u %t &quot;%r&quot; %s %b" />

第1行:

  • name="Catalina":服务名称。

第3到5行:

  • port="8080":HTTP连接器监听的端口。
  • protocol="HTTP/1.1":使用的协议。
  • connectionTimeout="20000":连接超时时间,单位为毫秒。
  • redirectPort="8443":当需要SSL时的重定向端口。

第7行:

  • Connector (AJP/1.3)
  • port="8009":AJP连接器监听的端口。
  • protocol="AJP/1.3":使用的协议。
  • redirectPort="8443":当需要SSL时的重定向端口。

第9行:

  • name="Catalina":引擎名称。
  • defaultHost="localhost":默认的主机名。

第11到14行:

  • LockOutRealm:提供对多次失败的登录尝试进行锁定的功。
  • UserDatabaseRealm:使用定义在UserDatabase资源中的用户数据库进行认证。

第16行至17行:

  • Host : 虚拟主机
  • name="localhost":主机名。
  • appBase="webapps":Web应用的基础目录。相对路径相对于CATALINA_HOME(/usr/local/tomcat)而言的,也可以写绝对路径。
  • unpackWARs="true":是否自动解压WAR文件。
  • autoDeploy="true":是否自动部署应用。

第19行至21行:

  1. directory="logs":日志文件存放的目录。
  2. prefix="localhost_access_log":日志文件的前缀。
  3. suffix=".txt":日志文件的后缀。
  4. pattern="%h %l %u %t "%r" %s %b":日志的记录格式。
<?xml version='1.0' encoding='utf-8'?>
<!--
<Server>元素代表整个容器,是Tomcat实例的顶层元素.它包含一个<Service>元素.并且它不能做为任何元素的子元素.
port指定Tomcat监听shutdown命令端口
shutdown指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置
-->
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
      type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
      factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
      pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <!--service服务组件-->
  <Service name="Catalina">
    <!-- Connector主要参数说明(见下面) -->
    <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
          resourceName="UserDatabase"/>
      </Realm>
      <!-- 详情常见(host参数详解)-->
      <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">
        <!-- 详情见扩展(Context参数说明 )-->
        <Context path="" docBase="" debug=""/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
          prefix="localhost_access_log" suffix=".txt"
          pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

Tomcat反向代理集群(nginx实现负载均衡)

安装nginx:关闭防火墙和selinux

cd /etc/yum.repos.d/  && vim nginx.repo
# 写入:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
#
yum -y install yum-utils nginx
# 备份原配置文件并修改
cd /etc/nginx/conf.d/
cp default.conf default.conf.back
mv default.conf tomcat.conf
vim tomcat.conf
# 
upstream testweb {
        server 192.168.137.152:8080 weight=1 max_fails=1 fail_timeout=2s;
        server 192.168.137.152:8082 weight=1 max_fails=1 fail_timeout=2s;
}
server {
    listen       80;
    server_name  localhost;
    access_log  /var/log/nginx/proxy.access.log  main;

    location / {
       proxy_pass http://testweb;
       proxy_set_header Host $host:$server_port;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }       
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } 
}

上游(upstream)服务器组的Nginx配置块,通常用于负载均衡设置/故障转移

  1. upstream testweb: 定义一个名为 testweb 的新的上游服务器组;
  2. IP地址为 192.168.50.114;端口为 8081;
  3. weight=1 表示这个服务器的权重是1;
  4. max_fails=1 表示允许连接失败的最大次数为1,超过这个次数后,Nginx会认为该服务器不可用;
  5. fail_timeout=2s 表示如果服务器失败,Nginx会在2秒后再次尝试连接;

server块的部分配置:

  1. listen 80 Nginx监听80端口,HTTP协议的默认端口
  2. server_name localhost 服务器名:localhost。当请求的Host头部与这个值匹配时,Nginx将使用这个server块来处理请求。通常,生产环境中的服务器名会设置为网站的域名。
  3. access_log /var/log/nginx/proxy.access.log main 访问日志的路径和日志格式。
  4. server_name域名或IP地址。多个域名在同一个server块中使用server_name指令多次,列出所有域名。
  5. access_log指令可以多次出现,为不同的location块指定不同的日志文件或日志格式。

location块:定义了当请求匹配/(即网站的根路径)时Nginx的行为

  1. location / { ... } : 定义了一个location块,它匹配所有对网站根URL的请求。
  2. proxy_pass http://testweb :将请求代理(转发)到之前定义的testweb上游服务器组。所有匹配该location的请求都会根据testweb的配置分发到相应的后端服务器。
  3. proxy_set_header Host $host:$server_port :设置了代理请求的Host头:主机名和端口。$host变量获取请求中的主机名,$server_port变量获取处理请求的服务器的端口号。
  4. proxy_set_header X-Real-IP $remote_addr :设置一个自定义的响应头X-Real-IP,其值为发起请求的客户端IP地址,这有助于识别真实的客户端IP,特别是在使用了HTTP代理或负载均衡器的情况下。
  5. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for :设置X-Forwarded-For头,用于标识原始请求的客户端以及经过的代理列表。如果请求已经包含了X-Forwarded-For头,$proxy_add_x_forwarded_for变量会将原始值与$remote_addr(当前请求的IP)合并,而不是替换它。

//

  1. error_page 当服务器遇到HTTP 500、502、503或504错误时,应将请求重定向到 /50x.html
  2. location = /50x.html {...} 当 /50x.html 路径被请求时,Nginx将执行这个块内的指令
  3. root /usr/share/nginx/html 定义的/50x.html文件的根目录。Nginx将在/usr/share/nginx/html目录下查找50x.html文件
若 tomcat没打开:如图
# 打开tomcat:
/usr/local/tomcat/bin/startup.sh
/usr/local/tomcat_2/bin/startup.sh
# 反复刷新可以看到页面下方的端口号在更变

 

 

Tomcat相关调优

日志格式配置

vim /usr/local/tomcat/conf/server.xml
# 用于设置访问日志的行为
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
  prefix="jenkins-" suffix="-access_log"
  pattern="%{X-Real-IP}i - %v %t &quot;%r&quot; - %s %b %T &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; %a &quot;-&quot; &quot;-&quot;" />
  1. <Valve className="org.apache.catalina.valves.AccessLogValve" ... />: 指定了一个阀类的全限定名,org.apache.catalina.valves.AccessLogValve是Tomcat内置的访问日志记录阀。
  2. directory="logs" : 存放访问日志文件的目录。日志文件将被存放在 /tomcat/logs/ 目录中。(可自定义路径,写绝对路径)
  3. prefix="jenkins-" : 日志文件的前缀;后面跟着日期和后缀。如:jenkins-2024-07-31-access_log
  4. suffix="-access_log" : 日志文件的后缀;访问日志文件将以.txt结尾。
  5. pattern="%{X-Real-IP}i - %v %t &quot;%r&quot; - %s %b %T &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; %a &quot;-&quot; &quot;-&quot;" /> : 定义了日志的格式

%{X-Real-IP}i :记录X-Real-IP请求头的值,通常用于记录经过代理或负载均衡器的真实客户端IP地址。

&quot;%{Referer}i&quot; :记录Referer请求头,指明请求的来源页面。

&quot;%{User-Agent}i&quot; :记录User-Agent请求头,提供客户端浏览器的信息。

日志参数解释:

%a - 远程IP地址

%A - 本地IP地址

%b - 发送的字节数,不包括HTTP头,或“ - ”如果没有发送字节

%B - 发送的字节数,不包括HTTP头

%h - 远程主机名

%H - 请求协议

%l (小写的L)- 远程逻辑从identd的用户名(总是返回' - ')

%m - 请求方法

%p - 本地端口

%q - 查询字符串(在前面加上一个“?”如果它存在,否则是一个空字符串

%r - 第一行的要求,客户端请求的第一行,包括HTTP方法、请求URL和协议版本。例如:"GET /example.html HTTP/1.1"。

%s - 响应的HTTP状态代码

%S - 用户会话ID

%t - 日期和时间,在通用日志格式,使用指定格式(例如 %t{dd/MMM/yyyy:HH:mm:ss Z})

%u - 远程用户身份验证

%U - 请求的URL路径

%v - 本地服务器名

%D - 处理请求的时间(以毫秒为单位)

%T - 处理请求的时间(以秒为单位)

%I (大写的i) - 当前请求的线程名称


JVM 参数优化

cp /usr/local/tomcat/bin/catalina.sh  /usr/local/tomcat/bin/catalina.sh.back
vim /usr/local/tomcat/bin/catalina.sh
#
JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"   #jdk1.8

这条代码是用于设置Java虚拟机(JVM)的启动参数:

JAVA_OPTS="$JAVA_OPTS -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m"

首先将 JAVA_OPTS 环境变量的值设置为其当前值(如果有的话),然后添加了一系列JVM启动参数:

  1. -Xms1024m: 指定JVM的初始堆内存大小为1024 MB。
  2. -Xmx1024m: 指定JVM的最大堆内存大小为1024 MB。
  3. -XX:MetaspaceSize=512m: 指定元数据空间(Metaspace)的初始大小为512 MB。元数据空间用于存储类的元数据信息。
  4. -XX:MaxMetaspaceSize=512m: 指定元数据空间的最大大小为512 MB。

开启GC日志

vim /usr/local/tomcat/bin/catalina.sh
#
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/gc-%t.log"

这条代码是用于设置Java虚拟机(JVM)的启动参数,主要是用于配置垃圾回收(GC)日志输出:

首先将 JAVA_OPTS 环境变量的值设置为其当前值(如果有的话),然后添加了一系列JVM启动参数:

  1. XX:+PrintGCDetails: 启用GC日志详细输出,包括每次GC事件的详细信息,如GC类型、GC前后堆内存情况等。
  2. XX:+PrintGCDateStamps: 启用GC日志输出时间戳,每条GC日志输出的前缀将包含日期和时间信息。
  3. Xloggc:/data/logs/gc-%t.log: 指定GC日志文件的输出路径和文件名格式。/data/logs/gc-%t.log 中的 %t 将会被替换为当前日期时间的时间戳。

开启JMX端口便于监控

vim /usr/local/tomcat/bin/catalina.sh
#
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=10028 
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false 
-Djava.rmi.server.hostname=java69-matrix.zeus.lianjia.com"

这条代码是用于配置 Tomcat 服务器的启动参数,具体解释如下:

  1. Dcom.sun.management.jmxremote:启用 JMX(Java Management Extensions)远程管理功能。允许外部监控程序(如JConsole或VisualVM)连接到Tomcat服务器并监视其状态和性能。
  2. Dcom.sun.management.jmxremote.port=10028:指定 JMX 远程管理的端口 10028。监控程序将使用该端口连接到Tomcat服务器。
  3. Dcom.sun.management.jmxremote.authenticate=false:禁用JMX远程管理的认证功能,允许任何可以连接到服务器的客户端都可以进行JMX操作。
  4. Dcom.sun.management.jmxremote.ssl=false:禁用JMX远程管理的SSL安全传输,以简化连接配置。在此配置下,连接不会通过SSL进行加密。
  5. Djava.rmi.server.hostname=java69-matrix.zeus.lianjia.com:指定 RMI(Remote Method Invocation)服务器的主机名或IP地址。在JMX远程管理中,这将用于通知监控程序Tomcat服务器的位置。

取消JVM 的默认DNS缓存时间

不缓存DNS记录,避免DNS解析更改后要重启JVM虚拟机

vim /usr/local/tomcat/bin/catalina.sh
# 添加
CATALINA_OPTS="$CATALINA_OPTS -Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=0
  1. Dsun.net.inetaddr.ttl=0:这个系统属性设置了网络地址(InetAddress)的生存时间(TTL,Time-To-Live)为0。TTL用于指定网络数据包在网络中允许存在的时间。将TTL设置为0意味着数据包一旦到达目的地,即被丢弃,不会被路由到其他节点。网络地址的生存时间被设置为尽可能短,可以避免一些不必要的网络传输。
  2. Dsun.net.inetaddr.negative.ttl=0:这个系统属性设置了负缓存的生存时间为0。负缓存用于缓存DNS查询的失败结果,以避免频繁地重新查询。将负缓存的生存时间设置为0意味着失败的DNS查询结果不会被缓存,每次查询都会重新进行。这可以确保Tomcat服务器及时获取到最新的DNS解析结果,而不会受到旧缓存的影响。

 

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值