新闻动态

行业新闻企业新闻雷火电竞

DAY 49 tomcat服务配置优化

雷火电竞

什么是置优Tomcat

Tomcat是Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的Web应用服务器,是Apache 软件基金会的 Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及人共同开发而成 。置优

Tomcat属于轻量级应用服务器,在中小型系统和并发访问用户不是置优很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。一般来说,Tomcat 虽然和Apache 或者Nginx这些Web服务器一样,具有处理HTML页面的置优功能,然而由于其处理静态HTML的能力远不及Apache 或者Nginx,所以Tomcat 通常是作为一个Servlet 和 JSP 容器,单独运行在后端。

Tomcat核心组件

Tomcat核心组件有三个:

Tomcat由一系列的组件构成,其中核心的组件有三个:

(1)web容器: 完成Web服务器的功能。

(2)Servlet 容器: 名字为catalina,用于处理Servlet 代码 。置优

(3)JSP容器: 用于将JSP动态网页翻译成Servlet 代码。置优

因此Tomcat 是置优Web 应用服务器,也是一个Servlet/JSP 容器。Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的置优响应传送回给客户。

 什么是置优servlet? (用来实现用Java语言开发的动态页面逻辑)

什么是置优JSP?

Tomcat 功能组件结构

Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器Connector, 和负责处理请求的容器Container  。

其中连接器和容器相辅相成,一起构成了基本的web服务Service 。每个Tomcat服务器可以管理多个Service

Tomcat 功能组件结构

Container结构分析:

每个Service 会包含一一个Container 容器 。在Container 内部包含了4个子容器: 4个子容器的作用分别是:

(1) Engine: 引擎,用来管理多个虚拟主机,一个Service最多只能有一一个Engine;

(2) Host: 代表一个虚拟主机,也可以叫站点,通过配置Host就可以添加站点;

(3) Context: 代表一个Web应用,包含多个Servlet 封装器;

(4) wrapper: 封装器,容器的最底层 。每一Wrapper 封装着一个servlet, 负责对象实例的创建 、执行和销毁功能  。

Engine、Host 、Context 和Wrapper,这四个容器之间属于父子关系。

容器由一个引擎可以管理多个虚拟主机 。每个虚拟主机可以管理多个web应用 。每个Web

Tomcat请求过程

Tomcat的端口和主要目录说明

Tomcat端口

客户端和tomcat进行连接时使用:

8005端口: shutdown用于关闭tomcat进程 。tomcat监听的关闭端口,就是说这个端口负责监听关闭tomcat的请求。

8009端口: 用于转发,负责和其他http服务器建立连接 。但一般不用,因为tomcat一般放在后端服务器,其他服务器转发给tomcat

Tomcat主要目录

ls /usr/local/tomcat/

目录说明
bin存放启动和关闭Tomcat 的脚本文件,如catalina.sh、startup.sh、shutdown.sh
conf存放Tomcat 服务器的各种配置文件,如主配置文件server.xml 和应用默认的部署描述文件web.xml
lib存放Tomcat运行需要的库文件的jar 包,一般不作任何改动
logs存放Tomcat 执行时的日志
temp存放Tomcat 运行时产生的文件
webapps存放Tomcat默认的web应用项目资源的目录
workTomcat 的工作目录,存放web应用代码生成和编译文件

Tomcat 部署步骤

在部署 Tomcat 之前必须安装好 jdk,因为Tomcat是采用Java语言编写的,而jdk是java的开发工具,没有jdk,Tomcat是跑不起来的,所以 jdk 是 Tomcat 运行的必要环境 。

官网下载JDK的安装包以及Tomcat的安装包

下载并安装 JDK

[root@localhost ~]# cd /opt[root@localhost opt]# lsrh[root@localhost opt]# rz -Erz waiting to receive.[root@localhost opt]# rz -Erz waiting to receive.[root@localhost opt]# lsapache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm rh[root@localhost opt]# systemctl stop firewalld[root@localhost opt]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.[root@localhost opt]# setenforce 0

 设置JDK环境变量

 编写Java文件验证

vim Hello.java#类名 、接口名命令:英文大小写字母 、数字字符、$和_,不能使用关键字和数字开头;一个单词命名时第一个单词的首字母要大写;多单词组成时,所有单词的首字母大写:XxxYyyZzz(大驼峰命名法)public class Hello {public static void main(String[] args){System.out.println("Hello world!");}}javac Hello.javajava Hello

 安装启动Tomcat 

cd /opttar zxvf apache-tomcat-9.0.16.tar.gzmv apache-tomcat-9.0.16 /usr/local/tomcat #将解压的压缩包移动到/usr/local下并改名为tomcat

 启动tomcat

#后台启动/usr/local/tomcat/bin/startup.sh 或/usr/local/tomcat/bin/catalina.sh start#前台启动/usr/local/tomcat/bin/catalina.sh run

 浏览器访问Tomcat的默认主页 http://192.168.137.15:8080(本机IP)

 优化tomcat启动速度

第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。

vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security--117行--修改securerandom.source=file:/dev/urandom /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh

 tomcat主要目录说明

[root@localhost bin]# ls /usr/local/tomcat/bin conf lib logs README.md RUNNING.txt webappsBUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work

bin:存放启动和关闭 Tomcat 的脚本文件,如 catalina.sh 、startup.sh 、shutdown.sh conf:存放 Tomcat 服务器的各种配置文件,如主配置文件 server.xml 和 应用默认的部署描述文件 web.xml lib:存放 Tomcat 运行需要的库文件的 jar 包,一般不作任何改动 logs:存放 Tomcat 执行时的日志 temp:存放 Tomcat 运行时产生的文件 webapps:存放 Tomcat 默认的 Web 应用项目资源的目录 work:Tomcat 的工作目录,存放 Web 应用代码生成和编译文件  

tomcat 8080 http端口

tomcat 8443 https端口

tomcat 8005端口是用来关闭进程所用

tomcat 8009转发端口

负责和其它http服务器建立连接

Tomcat 虚拟主机配置

很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。 例如现在新增两个域名 www.my.com 和 www.qyd.com, 希望通过这两个域名访问到不同的项目内容 。

创建cxk和lq项目目录和文件

mkdir /usr/local/tomcat/webapps/cxkmkdir /usr/local/tomcat/webapps/lqecho "This is cxk page\!" > /usr/local/tomcat/webapps/cxk/index.jspecho "This is lq page\!" > /usr/local/tomcat/webapps/lq/index.jsp

修改 Tomcat 主配置文件 server.xml

vim /usr/local/tomcat/conf/server.xml--165行前--插入

重启tomcat服务

/usr/local/tomcat/bin/shutdown.sh/usr/local/tomcat/bin/startup.sh

设置域名解析

echo "192.168.137.15 www.cxk.com www.lq.com" >> /etc/hosts

Tomcat优化

Tomcat 配置文件参数优化

常用的优化相关参数如下:

redirectPort:如果某连接器支持的协议是HTTP,当接收客户端发来的HTTPS请求时,则转发至此属性定义的 8443 端口  。maxThreads:Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,即支持的最大并发连接数,默认值是 200。minSpareThreads:最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有人使用也开这么多空线程等待,默认值是 10  。maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制) 。一般不需要指定 。processorCache:进程缓冲器,可以提升并发请求 。默认值是200,如果不做限制的话可以设置为-1,一般采用maxThreads的值或者-1。URIEncoding:指定 Tomcat 容器的 URL 编码格式,网站一般采用UTF-8作为默认编码 。connnectionTimeout:网络连接超时,单位:毫秒,设置为 0 表示永不超时,这样设置有隐患的。通常默认 20000 毫秒就可以。enableLookups:是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为 false,则直接返回 IP 地址,为了提高处理能力,应设置为 false 。disableUploadTimeout:上传时是否使用超时机制 。应设置为 true。connectionUploadTimeout:上传超时时间,毕竟文件上传可能需要消耗更多的时间,这个根据你自己的业务需要自己调,以使Servlet有较长的时间来完成它的执行,需要与上一个参数一起配合使用才会生效。acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为 100 个。maxKeepAliveRequests:指定一个长连接的最大请求数 。默认长连接是打开的,设置为1时,代表关闭长连接;为-1时,代表请求数无限制compression:是否对响应的数据进行GZIP压缩,off:表示禁止压缩;on:表示允许压缩(文本将被压缩)、force:表示所有情况下都进行压缩,默认值为 off,压缩数据后可以有效的减少页面的大小,一般可以减小 1/3 左右,节省带宽 。compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是 2048。compressableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。noCompressionUserAgents="gozilla, traviata":对于以下的浏览器,不启用压缩如果已经进行了动静分离处理,静态页面和图片等数据就不需做 Tomcat 处理,也就不要在 Tomcat 中配置压缩了

vim /usr/local/tomcat/conf/server.xml......<Connector port="8080" protocol="HTTP/11.1" connectionTimeout="20000" redirectPort="8443" --71行--插入minSpareThreads="50" enableLookups="false" disableUploadTimeout="true" acceptCount="300" maxThreads="500" processorCache="500"URIEncoding="UTF-8" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/gif,image /jpg,image/png"/>