tomcat 内存溢出_Tomcat配置文件server.xml解析与应用

c2da644ddce8c03251dbf4a67ab597e9.png

在Tomcat架构初识介绍了Tomcat的架构,其中主要包括了服务器(server)、服务(service)、连接器(connector)、引擎(engine)、主机(host)、上下文(context)等组件以及它们之间的从属关系。

那么这些组件在哪里进行定义了?

1.server.xml文件的作用

server.xml文件中各元素对应着Tomcat架构中各个组件,通过修改xml文件中的元素配置信息,实现对Tomcat中各个组件的控制。

2.server.xml文件的位置

tomcat安装位置confserver.xml

3.server.xml文件解析

(1)服务器(Server)

可以看到顶级元素是Server,其有port和shutdown两个属性,代表关闭这个Server,也就是Tomcat的端口和命令,可以进行修改。

当启动了多个Tomcat的时候,端口一定要修改,不然会出现端口冲突的问题。

8f7432b14c0892772de67c7978798523.png

(2)服务(Service)

一个Server可以包含多个Service,一个service包含了connector、engine、host、context等组件。

service有一个name的属性,默认为Catalina,可以进行修改。

25debc3032c53e70446af4d676ad3518.png

(3)连接器(Connector)

Connector元素的属性有协议和端口,tomcat首先通过这两项接收客户端的请求,并创建Request和Response对象,传给Engine,分配线程让Engine来处理这个请求。端口可以修改。

ff3a37ae154311d943557448d8862dbb.png

(4)引擎(Engine)

Engine元素在Service中有且只有一个,Engine是Service中的请求处理组件,Engine从一个或多个Connector中接收请求并处理,并将完成的响应返回给Connector,最终传递给客户端。

Engine中的name属性值可以进行修改,Engine有多个Host。

cacebf8c8af601f0190c26b8fde20d8c.png

(5)主机(Host)

Host元素定义了一个虚拟主机,它可以包含一个或多个Web应用;

其中属性appBase指定虚拟主机的目录,可以使绝对路径也可以是相对路径;默认值为/webapps。

其中name属性值必须与EnginedefaultHost属性值一致。

其中unpackWARs属性:属性值为true,表示将把Web应用的war文件先解压为开放目录结构后再运行。如果设为false,将直接运行war文件。

其中autoDeploy属性:属性值为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web应用加入进来,会自动发布这个Web应用。

27610c8013523b9d9bec936c380a7c61.png

(6)上下文(Context)

Context元素代表了运行在虚拟主机上的Web应用,一个元素中可以包含多个元素。

747ed25618007dfd9fc54bd6e0945134.png

属性docBase:该属性值表示Web应用在服务器上文件路径,可以为绝对路径,也可以为相对于Host的appBase属性的相对路径。

属性path:该属性值指定访问该Web应用的URL。

属性reloadable:该属性值设为true时,在Tomcat服务器运行状态下会监视在WEB-INF/class和WEB-INF/lib目录下CLASS文件的改动,如果检测到有calss文件被更新,服务器会自动重新加载Web应用。

需要注意的是:

1.一个Server下可以有多个Service,设置两个service可以参照以下步骤:

1)修改第二个Service元素的name属性值为Catalina2

2)修改Connector元素的port属性值,不能出现重复

3)修改Engine元素的name属性值为Catalina2(与Service的name属性值保持一致)

4)修改Host元素的appBase属性值为webapps2

5)创建目录

a)tomcat安装路径/conf/下,创建目录Catalina2/localhost;

b)tomcat安装路径下,创建webapps2

c)将tomcat安装路径/webapps/下ROOT文件夹复制到webapps2目录下

2.如果在一个tomcat下,配置了多个service,那么需要修改tomcat的内存参数,以免内存溢出

(1)Linux系统

打开tomcat安装路径bin下的catalina.sh,在cygwin=false前,添加如下内容,参数值根据服务器情况进行修改。

JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"

(2)Windows系统

对于解压版tomcat,在安装目录bin下,打开catalina.bat文件,在set "CURRENT_DIR=%cd%"下,添加如下内容:

set JAVA_OPTS=-Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true

3.当在同一台主机启动多个tomcat时

(1)无需设置环境变量CATALINA_HOME,因为多个tomcat启动文件都会在环境变量CATALINA_HOME中寻找,不能正确启动对应tomcat。

(2)多个tomcat的端口不能相同,包括负责http访问的8080端口、负责关闭tomcat的8005端口、负责JK连接的8009端口。

4.客户端的请求主要经历了哪些组件

(1)首先通过Connector组件的协议和端口

(2)然后通过Host组件的域名或IP地址

(3)最后通过Context组件的web应用的文件路径

#学问分亨官##闪光时刻第二期主题征文#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值