Tomcat部署与优化

Tomcat部署与优化

Tomcat简述

请添加图片描述

server: 服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个
service:服务,用来组织Engine(引擎)和Connector(连接器,端口)的对应关系,一个service中只有一个Engine

connector:连接器,负责客户端的HTTP、HTTPS、AJP等协议连接。一个Connector只属于某一个Engine

Engine:即引擎,用来响应并处理用户请求。一个Engine上可以绑定多个Connector
Host:即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分
Context:应用的上下文,配置特定url路径映射和目录的映射关系: url => directory

Tomcat请求过程
  • 假设来自客户的请求为: http://localhost:8080/test/index.jsp 浏览器端的请求被发送到服务端端口8080,Tomcat进程监听在此端口上。通过侦听的HTTP/1.1Connector获得此请求。

  • Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的响应

  • Engine获得请求192.168.91.100:8080/test/index.jsp,遍历它所有虚拟主机Host

  • Engine匹配到名为localhost的Host。如果匹配不到,就把请求交给该Engine中的defaultHost处理. localhost Host获得请求/test/index.jsp,匹配它所拥有的所有Context

  • Host匹配到路径为/test的Context

  • path=/test的Context获得请求index.jsp,在它的mapping table中寻找对应的servlet

  • Context匹配到URLPATTERN为*.jsp的Sservlet,对应于]spServlet类构造HtpServletRequest对象和HttpServletResponse对象,作为参数调用)spSer let的doGet或doPost方法。

  • Context把执行完了之后的HttpServletResponse对象返回给Host

  • Host把HttpServletResponse对象返回给Engine

  • Engine把HttpServletResponse对象返回给Connector

  • Connector把HttpServletResponse对象返回给浏览器端

Tomcat部署

安装JDK

#关闭防火墙和selinux
systemctl disable firewalld --now
setenforce 0
 
#将源代码包置于/opt下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm

#安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 

#确定安装路径
rpm -ql jdk1.8 | tail -n 1

cd /usr/java/jdk1.8.0_201-amd64/;ls 

#查看JDK版本
java -version 

#设置JDK环境变量
vim /etc/profile
#添加环境变量
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile#刷新配置文件

#安装Tomcat并用systemd启动
#解压tomcat安装包
cd /opt
tar zxf apache-tomcat-9.0.16.tar.gz   
#简化路径,方便管理
mv apache-tomcat-9.0.16 /usr/local/tomcat
#启动Tomcat的方法,省略路径
startup.sh          #后台启动tomcat
catalina.sh start   #后台启动tomcat
catalina.sh run     #前台启动 tomcat
#关闭Tomcat的方法:
shutdown.sh
#查看tomcat是否启动:
netstat ss ps jps
添加到supervisord服务
#安装源和服务
yum install -y epel-release
yum install -y supervisor

#建立管理用户
useradd tomcat
chown -R tomcat:tomcat /usr/local/tomcat
#编辑住配置文件
vim /etc/supervisord.conf

vim /etc/supervisord.d/tomcat.conf

[program:tomcat]
command=/usr/local/tomcat/bin/catalina.sh run  ;程序启动命令
autostart=true          ;在supervisord启动的时候也自动启动
startsecs=10            ;启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true        ;程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=3          ;启动失败自动重试次数,默认是3
user=tomcat             ;用哪个用户启动进程,默认是root
priority=999            ;进程启动优先级,默认999,值小的优先启动
redirect_stderr=true    ;把stderr重定向到stdout,默认false
stdout_logfile_maxbytes=200MB    ;stdout 日志文件大小,默认50MB
stdout_logfile_backups=20        ;stdout 日志文件备份数,默认是10
; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件)
stdout_logfile=/var/log/supervisor/logs/catalina.out
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程

mkdir -p /var/log/supervisor/logs #创建日志路径

systemctl start  supervisord  #启动服务
systemctl enable supervisord #开机自启

#启动方式二
#supervisord -c /etc/supervisord.conf 

supervisorctl reread #重新加载 Supervisor 的配置
supervisorctl update #应用新的配置

supervisorctl start tomcat
supervisorctl status tomcat

Tomcat的端口和主要目录

Tomcat端口

8080: 默认接收 http 请求的端口

8005: 安全端口,可以关闭tomcat

8009: apache 和 tomcat 联动 AJP 协议

8443:负责处理https请求连接

主要目录

目录名字功能
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存放项目资源的目录
workomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到

conf子目录

文件名说明
server.xml主配置文件 全局生效
web.xml每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件
context.xm用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件
tomcat-users.xml用户认证的账号和密码文件
catalina.policy当使用security选项启动omcat时,用于为tomcat设置安全策略
catalina.propertiesTomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数
logging.propertiesTomcat日志系统相关的配置,可以修改日志级别和日志路径等
Tomcat虚拟机
#创建项目目录和文件
mkdir /usr/local/tomcat/webapps/ck1
mkdir /usr/local/tomcat/webapps/ck2

echo "This is ck1\!" > /usr/local/tomcat/webapps/ck1/index.jsp

echo "This is ck2\!" > /usr/local/tomcat/webapps/xhz/index.jsp

#修改Tomcat主配置文件server.xml
vim /usr/local/tomcat/conf/server.xml

#165行前插入
 <Host name="www.a.com"  appBase="/usr/local/tomcat/webapps/ck1"
            unpackWARs="true" autoDeploy="true">
      </Host>
      <Host name="www.b.com"  appBase="/usr/local/tomcat/webapps/ck2"
            unpackWARs="true" autoDeploy="true">
      </Host>


#重新启动
supervisorctl restart tomcat

在本机的hosts文件中添加

192.168.118.30www.a.com www.b.com
请添加图片描述

Tomcat优化

怎么查看线程数?
ss -natp | grep java 看pid

ps -T -p pid

配置文件优化

maxThreads (最大线程数/并发)

processorCache (进程缓冲)

acceptCount (等待队列数)

enableLookups (关闭DNS反向解析)

URIEncoding (网页字符集编码UTF-8)

maxKeepAliveRequests (长连接最大请求数)

connectionTimeout (连接超时时间)

compression (开启页面压缩)

系统内核优化

/etc/security/limits.conf 
nofile 
nproc  
memlock

/etc/sysct1.conf   
net .ipv4.tcp_tw_reuse=1   
net.ipv4.tcp_tw_recycle=1  
net.ipv4.tcp_fin_timeout=30  
net.ipv4.tcp_max_tw_buckets=5000              net.ipv4.ip_local_port_range=1024 65535

JVM优化

选项分类

  • -选项名称 此为标准选项,所有HotSpot都支持
  • -X选项名称 为稳定的非标准选项
  • -XX:选项名称 非标准的不稳定选项,下一个版本可能会取消
参数说明举例
-Xms设置应用程序初始使用的堆内存大小(年轻代+老年代)-Xms2g
-Xmx设置应用程序能获得的最大堆内存早期JVM不建议超过32G,内存管理效率下降-Xms4g
-XX:NewSize设置初始新生代大小-XX:NewSize=128m
-XX:MaxNewSize设置最大新生代内存空间-XX:MaxNewSize=256m
-Xmnsize同时设置-XX:NewSize 和 -XX:MaxNewSize,代-Xmn1g
-XX:NewRatio以比例方式设置新生代和老年代-XX:NewRatio=2 new/old=1/2
-XX:SurvivorRatio以比例方式设置eden和survivor(S0或S1)-XX:SurvivorRatio=6 eden/survivor=6/1 new/survivor=8/1
-Xss设置每个线程私有的栈空间大小,依据具体线程-Xss256k
     |

| -XX:SurvivorRatio | 以比例方式设置eden和survivor(S0或S1) | -XX:SurvivorRatio=6 eden/survivor=6/1 new/survivor=8/1 |
| -Xss | 设置每个线程私有的栈空间大小,依据具体线程 | -Xss256k |

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

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

相关文章

黑鹰优化算法(BEO)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

目录 原理简介 一、种群初始化 二、围捕行为 三、悬停行为 四、捕捉行为 五、抢夺行为 六、警告行为 七、迁徙行为 八、求偶行为 九、孵化行为 性能测评 参考文献 完整代码 黑鹰优化算法(Black eagle optimizer, BEO)是一种新型的元启发式算法&#xff08;智能优化…

微信小程序的运行机制与更新机制

1. 小程序运行机制 1.1. 冷启动与热启动 冷启动为用户第一次打开小程序时&#xff0c;因为之前没有打开过&#xff0c;这是第一种冷启动的情兑。第二种情况为虽然之前用户打开过&#xff0c;但是小程序被用户主动的销毁过&#xff0c;这种情况下我们再次打开小程序&#xff0…

PADS设置板框提示不闭合的解决办法

一般是选中join&#xff0c;提示不闭合&#xff0c;不能转成板框&#xff0c;其实直接点击close就好了&#xff0c;报错提示里就有提示&#xff0c;让用close命令试试

FT232串口win11打不开,重新安装驱动问题解决。

问题现象&#xff1a;FT232 WIN11打不开&#xff0c;串口识别正在被占用。更改串口号问题无法解决。 解决办法&#xff1a; 卸载驱动&#xff0c; 重启电脑&#xff0c; 去官网下驱动安装问题解决。Drivers - FTDI

卡尔曼滤波公式推导笔记

视频见B站上DR_CAN的卡尔曼滤波器 【卡尔曼滤波器】3_卡尔曼增益超详细数学推导 &#xff5e;全网最完整_哔哩哔哩_bilibili

虚拟机网络配置(静态网络)

解决问题&#xff1a;VMware中创建centOS虚拟机后使用ifconfig没有ip地址&#xff0c;但我想在主机&#xff08;Windows&#xff09;系统下使用shell连接虚拟机从而方便后续交互。 VMware中编辑->虚拟网络编辑器 &#xff08;注意需要管理员身份不然会无法修改&#xff09;…

一篇文章学会【node.js安装以及Vue-Cli脚手架搭建】

一.为什么搭建Vue-Cli (1).传统的前端项目结构&#xff1a; 一个项目中有许多html文件&#xff0c;每一个html文件都是相互独立的&#xff0c; 如果需要在页面中导入一些外部依赖的组件&#xff0c;就需要在每一个html文件中都需要导入&#xff0c;非常麻烦 (2).现在的前端…

老挝-海外媒体发稿:媒体宣发超给力,打造完美产业链

引言 老挝新闻网&#xff08;laosnews&#xff09;通过海外媒体发稿的方式&#xff0c;取得了显著的成就。借助媒体宣发的力量&#xff0c;老挝成功打造了一个完美的产业链&#xff0c;进一步推动了本国经济的发展。本文将探讨老挝-海外媒体发稿的优势以及产业链的构建和发展。…

HarmonyOS开发探索:使用Snapshot Insight分析ArkTS内存问题

识别内存问题 当怀疑应用存在内存问题的时候&#xff0c;首先使用DevEco Profiler的Allocation Insight来度量内存在问题场景下的大小变化以及整体趋势&#xff0c;初步定界问题出现的位置&#xff08;Native Heap/ArkTS Heap/dev等&#xff09;。 在初步识别内存问题出现的位置…

MySQL架构和性能优化

文章目录 一、MySQL架构架构图存储引擎MyISAM引擎特点InnoDB引擎特点管理存储引擎 二、性能优化索引索引管理EXPLAIN 工具使用profile工具 监控 一、MySQL架构 架构图 存储引擎 MySQL提供了多种存储引擎供用户选择&#xff0c;每种存储引擎都有自己的特点和使用场景。 InnoDB…

算法刷题之路之链表初探(二)Leecode21合并两个有序链表

算法刷题之路之链表初探&#xff08;二&#xff09; 今天来学习的算法题是leecode141环形链表&#xff0c;是一道简单的入门题&#xff0c;话不多说&#xff01;直接上&#xff01; 条件&#xff08;Leecode21&#xff09; 重点&#xff01;&#xff01;&#xff01; 我直接把…

primetime中cell和net的OCV

文章目录 前言一、Cell OCV1. POCV coefficient file2. POCV Slew-Load Table in Liberty Variation Format&#xff08;LVF lib&#xff09; 二、Net OCV三、如何check OCV是否已加上&#xff1f;总结 前言 在生产中&#xff0c;外界环境的各种变化&#xff0c;比如PVT&#…

代码随想录第40天|动态规划

完全背包 完全背包物品可以无限使用 01背包核心代码 01背包中的二维dp数组的两个for遍历可颠倒, 而一维dp数组的一定先遍历物品再遍历背包容量状态转移方程(背包容量一定为递减) 完全背包核心代码 (只在完全背包中一维dp数组嵌套顺序可颠倒, 实际题目需要确定遍历顺序) 状…

云计算与生成式AI的技术盛宴!亚马逊云科技深圳 Community Day 社区活动流程抢先知道!

小李哥最近要给大家分享7月7日在深圳的即将举办的亚马逊云科技生成式AI社区活动Community Day &#xff0c;干货很多内容非常硬核&#xff0c;不仅有技术分享学习前沿AI技术&#xff0c;大家在现场还可以动手实践沉浸式体验大模型&#xff0c;另外参与现场活动还可以领取诸多精…

API-本地存储

学习目标&#xff1a; 掌握本地存储 学习内容&#xff1a; 本地存储介绍本地存储分类存储复杂数据类型 本地存储介绍&#xff1a; 以前我们页面写的数据一刷新页面就没有了&#xff0c;是不是? 随着互联网的快速发展&#xff0c;基于网页的应用越来越普遍&#xff0c;同时也…

中医药文化传承进校园活动授牌仪式在石家庄主办举办

青春闪“药”&#xff0c;我心向党。2024年6月30日&#xff0c;由河北省药品医疗器械检验研究院主办的”中医药文化传承进校园活动在石家庄主办。来自河北省各地24所学校作为示范学校现场接牌。 河北省科协科普部部长范玉鑫、河北省教育厅学位管理与研究生处副处长耿立艳、河北…

Springboot项目实训--day1

目录 一、软件安装 二、软件的简单了解 三、基础知识应用 1、四个常用注释 2、尝试新建类 3、控制反转&#xff08;IOC容器&#xff09; 4、返回数据给浏览器 5、浏览器传回数据给服务器 易错点 一、软件安装 需要安装的软件是idea专业版&#xff0c;刚使用的时候可以使…

mac|浏览器链接不上服务器但可以登微信

千万千万千万不要没有关梯子直接关机&#xff0c;不然就会这样子呜呜呜 设置-网络&#xff0c;点击三个点--选择--位置--编辑位置&#xff08;默认是自动&#xff09; 新增一个&#xff0c;然后选中点击完成 这样就可以正常上网了

Python 异常

文章目录 捕获异常捕获常规异常捕获指定异常捕获多个异常 else语法finally语法异常的传递 捕获异常 假设某处可能会出现异常&#xff0c;提前做好准备。 捕获常规异常 所有的异常都会被捕获&#xff0c;不指定异常。 语法&#xff1a; try:可能出错的代码 except:出现异常后…

Open3D 点云快速全局配准FGR算法(粗配准)

目录 一、概述 1.1原理和步骤 1.2关键技术和优势 1.3应用场景 二、代码实现 2.1 关键代码 2.1.1.函数&#xff1a;execute_fast_global_registration 2.1.2调用registration_fgr_based_on_feature_matching函数 2.2完整代码 三、实现效果 3.1原始点云 3.2粗配准后点…