Tomcat部署和优化

一、Tomcat概述

1.1 Tomcat介绍

        Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,具备Web服务器的所有功能,在中小型系统和并发访问用户不是很多的场合下被普遍使用。实际上Tomcat是Apache服务器的扩展,但运行时它是独立运行的,是作为一个与Apache独立的进程单独运行的,不仅可以监听接收请求并响应静态资源,而且可以在后端运行特定规范的java代码Servlet,将执行结果以html代码的形式返回客户端。

1.2 Tomcat核心组件和目录结构

        1.2.1 核心组件

  • Web容器:完成Web服务器的功能。
  • Servlet容器:用于加载和运行servlet和jsp文件,用于处理Servlet代码。
  • JSP容器:将JSP动态网页翻译成Servlet代码。

        1.2.2 目录结构

  • bin:用于存放启动和关闭Tomcat的脚本文件,比较常用的是catalina.sh、startup.sh、shutdown.sh 三个文件。
  • conf:用于存放Tomcat服务器的各种配置文件,比较常用的是 server.xml(主配置文件)、context.xml、tomcat-users.xml、web.xml 四个文件。
  • lib:用于存放Tomcat 服务器的jar包,一般不作任何改动,除非连接第三方服务,比如redis,那就需要添加相对应的jar包。
  • logs:存放Tomcat日志。
  • temp:存放Tomcat运行时产生的文件。
  • webapps:用于存放项目资源的目录。
  • work:Tomcat工作目录,清除Tomcat缓存时会用到。

1.3 Tomcat请求处理

  1. 用户在浏览器中输入网址www.xxx.com:8080/test/index.jsp,请求被发送到服务器端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
  2. Connector把该请求交给它所在的Service的Engine(Container)来处理,并等待Engine 的回应;
  3. Engine获得请求www.xxx.com/test/index.jsp,匹配所有的虚拟主机Host;
  4. Engine匹配到名为www.xxx.com的Host(如果匹配不到就交给名为localhost的Host进行行匹配,如果localhost也没有匹配到Context,则执行响应的错误处理机制),名为www.xxx.com的Host获得请求testindex.isp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“”的 Context 去处理);
  5. path=“/test”的 Context 获得请求/index.jsp,在它的mapping table(就是在/test目录中找对应的网页文件)中寻找出对应的Servlet。 Context匹配到URL Pattern为*jsp的Servlet,对应于JspServlet类;
  6. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的 doGet()或 doPost(),执行业务逻辑、数据存储等。
  7. Context 把执行完之后的HttpServletResponse对象返回给 Host;之后原路返回,直到将HttpServletResponse对象返回给客户端。

        整个过程的大致示例图

二、Tomcat配置与优化

2.1 虚拟主机配置

        需要修改主配置文件中的内容,以基于域名配置虚拟主机为例,因为主配置文件为.xml后缀,所以主配置文件使用的也是XML的语法。

        注意网页文件目录需要真实存在,且需要创建以".jsp"为后缀的网页文件。"<Host>……</Host>"是以域名的方式区别不同的站点,可以通过创建多个"<Host>……</Host>"区域来创建多个站点。

2.2 Tomcat优化

        Tomcat默认安装下的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面,分别为操作系统优化(内核参数优化),Tomcat配置文件参数优化,Java虚拟机(JVM)调优。其中最难理解的就是JVM调优。

        2.2.1 Tomcat配置文件参数优化

        关于Tomcat主配置文件server.xml里面很多默认的配置项,并不能满足业务需求,常用的优化参数如下。

  • maxThreads:Tomcat使用线程来处理接收的每个请求,这个值表示Tomcat可创建的最大的线程数,默认值是200。
  • minSpareThreads:最小空闲线程数,Tomcat启动时的初始化线程数,表示即使没有人使用也开这么多空线程等待,默认值是10。。
  • maxSpareThreads:最大备用线程数,一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认值是-1(无限制),一般不需要指定。
  • URIEncoding:指定Tomcat容器的URL编码格式,Tomcat语言编码格式这块不如其他Web服务器软件配置方便,需要分别指定。
  • connectionTimeout:网络连接超时,单位:毫秒,设置为0表示永不超时,这样设置有隐患的。通常默认20000毫秒就可以。
  • enableLookups:是否反查域名,以返回远程主机的主机名,取值为:true 或 false,如果设置为false,则直接返回IP地址,为了提高处理能力,应设置为false。
  • disableUploadTimeout:上传时是否使用超时机制。应设置为 true.
  • connetctionUploadTimeout:上传超时时间,毕竟文件上传可能需要消耗更多的时间该参数需要根据自己的业务需要自行调整,以使Servlet有较长的时间来完成它的执行需要与上一个参数一起配合使用才会生效。
  • acceptCount:指定当所有可以使用的处理请求的线程都被使用时,可传入连接请求的最大队列长度,超过这个数的请求将不予处理,默认为100个。
  • compression:是否对响应的数据进行GZIP压缩,off表示禁止压缩、on表示允许压缩(文本将被压缩)、force表示所有情况下都进行压缩,默认值为of。压缩数据后可以有效的减少页面的大小,一般可以减小1/3左右,因而节省带宽。
  • compressionMinSize:表示压缩响应的最小值,只有当响应报文大小大于这个值的时候才会对报文进行压缩,如果开启了压缩功能,默认值就是2048。
  • compressiableMimeType:压缩类型,指定对哪些类型的文件进行数据压缩。
  • noCompressionUserAgents="gozilla,traviata":对于以下浏览器不启用压缩。

        在Tomcat部署好之后可以对其进行压力测试(例如使用jmeter压力测试工具), 以此来观察优化前后的区别。

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/728401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多智能体强化学习算法MA-POCA

论文原文&#xff1a;On the Use and Misuse of Absorbing States in Multi-agent Reinforcement Learning 预备知识参考&#xff1a; 强化学习纲要&#xff08;周博磊课程&#xff09; 强化学习实践教学 多智能体强化学习入门 MA-POCA是Unity官方2021年11月推出的多智能体…

JAVA基础10-包装类

Boolean b1new Boolean(true);System.out.println("b1" b1);//b1trueBoolean b2new Boolean("true" );System.out.println("b2" b2);//b2true 这里字符串也可转Boolean b3new Boolean("true123");System.out.println("b3"b3…

递归调用,将源路径下所有文件文件夹复制到目标路径中.

其实代码demo很简洁&#xff0c;只是逻辑有点绕&#xff0c;主要是要一层一层调用自己&#xff0c;要清楚当前是第几层调用&#xff0c;及递归调用时进的点和出的点在哪儿&#xff0c;一切就清晰明了了。 /// <summary>/// 删除指定目录下面的所有文件和文件夹/// </s…

《计算机英语》Unit1 计算机概述

期末试卷组成 1、选择20道 2、判断20道 3、词汇翻译&#xff08;单词词组&#xff0c;参照课后习题&#xff09; 4、翻译2道&#xff08;一道原题&#xff0c;参照作业&#xff09; Unit One Computer Overview 单元1 计算机概述 algorithm n. 算法 operate …

爬虫超详细介绍

爬虫&#xff08;Spider&#xff09;是一种自动化程序&#xff0c;用于在互联网上获取信息。 其工作原理主要可以分为以下几个步骤&#xff1a; 发起请求&#xff1a; 爬虫首先需要向目标网站发起HTTP请求&#xff0c;以获取网页的内容。这个请求可以包含一些额外的信息&…

优选算法刷题笔记 2024.6.10-24.6.20

一、双指针算法(快慢指针,对撞指针) 艹&#xff0c;CSDN吞了我是十三题笔记&#xff01;&#xff01;&#xff01; 二、滑动窗口(滑动窗口) 1、找到字符串中所有字母异位词 class Solution {public List<Integer> findAnagrams(String s, String p) {int[] hash1 new in…

小阿轩yx-Tomcat 部署及优化

小阿轩yx-Tomcat 部署及优化 Tomcat 概述 免费的、开放源代码的Web应用服务器Apache软件基金会(Apache Software Foundation)Jakarta项目中的一个核心项目由Apache、Sun和一些公司及个人共同开发而成深受Java爱好者的喜爱,并得到部分软件开发商的认可目前比较流行的Web应用服…

【Web APIs】DOM 文档对象模型 ④ ( querySelector 函数 | querySelectorAll 函数 | NodeList 对象 )

文章目录 一、querySelector 函数1、querySelector 函数简介2、完整代码示例 二、querySelectorAll 函数1、querySelectorAll 函数简介2、完整代码示例 三、NodeList 对象1、NodeList 对象简介2、完整代码示例 本博客相关参考文档 : WebAPIs 参考文档 : https://developer.moz…

ACL2024 | AI的时空穿越记:大型语言模型共时推理的奇幻之旅!

作者&#xff1a;苏肇辰 标题&#xff1a;Living in the Moment: Can Large Language Models Grasp Co-Temporal Reasoning? 录取&#xff1a;ACL2024 Main 论文链接&#xff1a;https://arxiv.org/abs/2406.09072 代码链接&#xff1a;https://github.com/zhaochen0110/Cotem…

T200HSA单路SDI/HDMI+1路3.5音频高清万能采集卡

产品简介&#xff1a; 同三维T200HSA单路高清万能采集卡&#xff0c;可以采集1路SDI/HDMI高清信号1路3.5音频信号&#xff0c;卡上有1个是HDMI接口1个是SDI接口1个3.5音频口&#xff0c;配件有&#xff1a; 1个小档板&#xff0c;PCI-E2.0 X1&#xff0c;分辨率最高可以达到10…

利用星穹云Serverless云平台高效开发小程序的技术实践

一、引言 在快速迭代、持续创新的互联网环境下&#xff0c;开发者们面临着巨大的挑战。传统的小程序开发模式不仅需要掌握后端技术&#xff0c;还需要关注服务器部署、维护等一系列问题&#xff0c;这无疑增加了开发者的学习成本和项目复杂度。而Serverless架构的兴起&#xf…

【Android】Android Studio版本手动升级到指定版本方法

前言 Android Studio本身存在自动升级的功能&#xff0c;但是这个功能使用的时候基本都是要升级到最新版本&#xff0c;但是有时候我们也不想升级到最新版本&#xff0c;是想升级到某一个版本&#xff0c;这个时候&#xff0c;Android Studio的自动升级版本的功能就无法使用了…

简单分享github

一、官网 GitHub: Let’s build from here GitHub 二、注册 通过简单的注册步骤&#xff0c;你就可以拥有一个属于自己的GitHub账号。再简单注册完成之后会需要验证你所输入的邮箱才能正常使用你的GitHub。 三、设置自己的库 在注册完成之后&#xff0c;完成一些简单的设置之…

数据库系统概论——数据库恢复技术

文章目录 数据库恢复技术事务的基本概念什么是事务如何定义事务&#xff1a;事务的特性 数据库恢复概述故障的种类恢复的实现技术恢复策略事务故障的恢复系统故障的恢复介质故障的恢复 数据库恢复技术 事务的基本概念 什么是事务 事务使用户定义的一个数据库操作序列&#x…

排序算法Java_实现

1.引言 查找和排序算法是算法的入门知识&#xff0c;其经典思想可以用于比较常见。 1.1 内部排序和外部排序的区别 内部排序&#xff1a;待排序记录存放在计算机随机存储器中(内存)进行排序的过程。 外部排序&#xff1a;待排序记录的数量很大&#xff0c;以至于内存不能一…

AI与区块链的融合:Web3时代下的新应用探索

本文来源香港Web3媒体Techub News AI与区块链&#xff1a;Web3时代的新机遇 在香港这座金融与科技交汇的繁荣都市&#xff0c;AI与区块链的结合已经成为Web3时代的重要议题&#xff0c;为行业发展带来了新的可能性和机遇。越来越多的开发者正在积极探索这一领域的融合&#xff…

复分析——第5章——整函数(复可积函数)(E.M. Stein R. Shakarchi)

第5章 整函数(复可积函数)(Entire Functions) ...but after the 15th of October I felt myself a free man, with such longing for mathematical work, that the last two months flew by quickly, and that only today I found the letter of the 19th of October that…

鸿蒙 Web组件的生命周期(api10、11、12)

概述 开发者可以使用Web组件加载本地或者在线网页。 Web组件提供了丰富的组件生命周期回调接口&#xff0c;通过这些回调接口&#xff0c;开发者可以感知Web组件的生命周期状态变化&#xff0c;进行相关的业务处理。 Web组件的状态主要包括&#xff1a;Controller绑定到Web组…

2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix

Ansible部署Zabbix 前言 今年的比赛考了一道Ansible部署Zabbix的题目&#xff0c;要求就是用两台centos7.5的云主机&#xff0c;一台叫ansible&#xff0c;一台叫node&#xff0c;使用对应的软件包&#xff0c;通过ansible节点控制node节点安装zabbix服务。这道题还是算比较简…

计算机网络 —— 应用层(电子邮件)

计算机网络 —— 应用层&#xff08;电子邮件&#xff09; 电子邮件发送电子邮件的过程SMTP特性工作流程 电子邮件格式MIME关键组件工作方式 POP/IMAPPOP&#xff08;邮局协议&#xff09;IMAP&#xff08;因特网邮件访问协议&#xff09; 基于万维网的电子邮箱特点优势常见的基…