Tomcat优化与动静分离

news2024/12/23 17:36:51

Tomcat优化

  • 一、Tomcat配置文件参数优化
  • 二、负载均衡,动静分离
    • 七层代理配置
    • 四层代理配置

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

一、Tomcat配置文件参数优化

关于 Tomcat 主配置文件 server.xml 里面很多默认的配置项,并不能满足业务需求,常用的优化参数如下。
【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 中配置压缩了。

以上是一些常用的配置参数,还有好多其它的参数设置,还可以继续深入的优化,HTTP Connector 与 AJP Connector 的参数属性值,可以参考官方文档的详细说明进行学习。

操作步骤:
vim /usr/local/tomcat/conf/server.xml
在这里插入图片描述

二、负载均衡,动静分离

在这里插入图片描述
其原理为:服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,由于nginx处理动态资源的能力较差,所以动态资源nginx会转发至后端。
在这里插入图片描述

七层代理配置

需准备三台虚拟机:
nginx服务器:192.168.136.53:80
tomcat服务器1(一个实例):192.168.136.54:8080
tomcat服务器2(两个实例):192.168.136.55:8080 192.168.136.55:8081

三台虚拟机的基础配置前期都有讲解,这里就直接进入七层代理的配置。

(1)Tomcat1 server 的动静分离配置
mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
在这里插入图片描述
vim /usr/local/tomcat/conf/server.xml
#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置
在这里插入图片描述
systemctl restart tomcai 别忘了配置完事之后重启服务

(2)Tomcat2 server 的动静分离配置
mkdir /usr/local/tomcat/tomcat1/webapps/test /usr/local/tomcat/tomcat2/webapps/test

在这里插入图片描述
vim /usr/local/tomcat/tomcat1/conf/server.xml
在这里插入图片描述
systemctl restart tomcai 别忘了配置完事之后重启服务

vim /usr/local/tomcat/tomcat2/webapps/test/index.jsp
在这里插入图片描述
vim /usr/local/tomcat/tomcat2/conf/server.xml
在这里插入图片描述
systemctl restart tomcai 别忘了配置完事之后重启服务

3)Nginx server 动静分离配置
先准备静态页面和静态图片
echo ‘<html><body><h1>这是静态页面</h1></body></html>’ > /usr/local/nginx/html/index.html
mkdir /usr/local/nginx/html/img
cp /root/game.jpg /usr/local/nginx/html/img

vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
4.测试效果
测试静态页面效果
浏览器访问 http://192.168.136.53/
在这里插入图片描述

浏览器访问 http://192.168.136.53/game.jpg
在这里插入图片描述

测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.136.53/test/index.jsp
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四层代理配置

四层代理需要使用五台虚拟机:
nginx服务器:192.168.136.51:80
nginx服务器1:192.168.136.52:80
nginx服务器2:192.168.136.53:80
tomcat服务器1(一个实例):192.168.136.54:8080
tomcat服务器2(两个实例):192.168.136.55:8080 192.168.136.55:8081
在这里插入图片描述
在现有七层代理的基础上再添加一个七层代理虚拟机。
配置完可以测试一下
在这里插入图片描述
再添加一台Nginx虚拟机,用来做接收客户端的信息
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、tienchin健身系统技术点复现-注解限流

二、tienchin健身系统技术点复现-注解限流 在上一章节写到编写 lua 脚本。基本的配置类都已经创建&#xff0c;下面创建一个 请求获取IP的工具类和全局异常处理即可。 1、创建工具类IpUtils package com.yangjiapo.rate_limiter.utils;import javax.servlet.http.HttpServlet…

Spark RDD实现分组排行榜

文章目录 一&#xff0c;提出任务二&#xff0c;实现思路三&#xff0c;准备工作1、在本地创建成绩文件2、将成绩文件上传到HDFS上指定目录 四&#xff0c;完成任务1、在Spark Shell里完成任务&#xff08;1&#xff09;读取成绩文件得到RDD&#xff08;2&#xff09;利用映射算…

kafka系统的架构

系统的架构 主题topic和分区partition topic Kafka中存储数据的逻辑分类&#xff1b;你可以理解为数据库中“表”的概念&#xff1b; 比如&#xff0c;将app端日志、微信小程序端日志、业务库订单表数据分别放入不同的topic partition分区&#xff08;提升kafka吞吐量&#…

有以下类定义,写出该类的构造函数,析构函数,拷贝构造函数,要求,所有类对象的空间都是用new动态申请。

有以下类定义&#xff0c;写出该类的构造函数&#xff0c;析构函数&#xff0c;拷贝构造函数&#xff0c;要求&#xff0c;所有类对象的空间都是用new动态申请。 class Stu {string name;int age;int score;int *high; }; #include <iostream> using namespace std; clas…

XSS-labs靶场通关

目录 level 1 ​level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 level 12 level 13 level 14 level 15 level 16 level 17 level 18 今天就要开始打xss-labs靶场了&#xff0c;点击图片开始吧 level 1 查看源码发现没…

Android系统的Ashmem匿名共享内存子系统分析(3)- Ashmem子系统的 C/C++访问接口

声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法&#xff0c;记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的&#xff0c;但因为我个人问题没能实施这个计划&#xff0c;留下些许遗憾…文中参考了很多书籍及博客内容&#xff0c;可能涉及的比较…

基于深度学习的高精度人体摔倒行为检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度人体摔倒行为检测识别系统可用于日常生活中或野外来检测与定位人体摔倒行为目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的人体摔倒行为目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系…

前端学习--Vue3.0(1)

1使用create-vue搭建Vue3项目 1.1 认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了 vite&#xff08;下一代前端工具链&#xff09;&#xff0c;为开发提供极速响应 create-vue基于vite vue-cli基于webpack 1.2 创建项目 需要16.0及以上的node.j…

机器学习笔记:深度学习模型复杂度

1 时间复杂度&#xff08;模型运算次数&#xff09; 决定了模型的训练/预测时间用FLOPs指代 机器学习笔记&#xff1a;FLOPs_flop 机器学习_UQI-LIUWJ的博客-CSDN博客 2 空间复杂度&#xff08;模型参数数量&#xff09; 决定了模型的参数数量 2.1 全连接层参数量 包含bias…

EBU6304 Software Engineering 知识点总结_6 项目管理_下 Design Patterns

Design Patterns Decorator Design pattern 用于扩展系统功能的装饰模式。 比如我们有一个鸭子类&#xff0c;可以调用其鸭子叫的方法。我们初始化了一个鸭子对象&#xff0c;如何统计这个对象叫了几次&#xff0c;也就是其鸭子叫方法被调用了几次&#xff1f;记住OCP原则不…

mysql 在 linux下的安装 和 配置

文章目录 1. linux 安装mysql1. 源码安装1.找到源码包2&#xff1a; 进行配置3&#xff1a;初始化数据目录官方说明 自用4&#xff1a;启动数据库5:写入环境变量 2&#xff1a;使用yum安装1. 直接配置mysql仓库 或者下载MySQL Yum Repository2&#xff1a;安装启动进入mysql 3&…

整理推荐 6 个超好用的平面设计网站!

本文将为大家介绍了 6 个最佳学习平面设计的网站&#xff0c;包括即时设计、Behance、Awwwards、Dribbble、Designinspiration 和 Pinterest。选择学习平面设计网站需要考虑匹配自己的设计风格、是否具有局限性等&#xff0c;可以试用几个网站后选择最合适的。 1、即时设计 即…

我们投出去的简历为什么已读不回?来看面试官如何筛选简历、挑选求职者?

目录 前言&#xff1a; 应届生 1、看学历 2、看实习经历 3、看专业 职场人士 面试官喜欢问什么问题 总结 前言&#xff1a; 金三银四&#xff0c;是求职者蠢蠢欲动的季节&#xff0c;亦是企业摩拳擦掌的季节。 因为作为企业的一名金牌面试官&#xff0c;我收到的内推…

RK1126 C++ yolov5 6.2

基于 rk npu &#xff0c; 实现 yolov5 6.2 模型推理 实现过程 ⚡️​ 编译 opencv 需根据自己路径修改. cmake -D CMAKE_BUILD_TYPERELEASE \-D CMAKE_C_COMPILER./gcc-arm-8.3-2019.02-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc \-D CMAKE_CXX_COMPILER./gc…

【Linux】多线程02 --- 线程的同步互斥问题及生产消费模型

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 目录 一、线程互斥1. 为什么要有共享资源临界保护&#xff1f; 2.理解加锁2.1 认识锁&#xff0c;使用锁 线程同步互斥问题是指多线程程序中&#xff0c;如何保证共享资源的正确访问和线程间…

阿里P8大佬七天七夜制作这份自动化核心知识点,错过了就是错过了

整理了一份自动化核心知识点。覆盖了web前端基础&#xff0c;HTML标签&#xff0c;CSS样式&#xff0c;自动化测试工具&#xff0c;webdriver环境搭建&#xff0c;元素定位&#xff0c;手机操作系统&#xff0c;移动自动化测试工具&#xff0c;自动化测试的流程与分类&#xff…

web自动化测试入门篇01——框架介绍

1. 目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架构的自动化来说&#xff0c;B/S有着其无法忽视的诸多优势&#xff0c;从行业发展趋、研发模式特点、测试工具支持&#x…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时&#xff0c;这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说&#xff0c;对于你所定义…

SOLIDWORKS PDM 独立程序 C#

本主题介绍如何创建登录到 一个 SOLIDWORKS PDM Professional 文件库&#xff0c;并列出根文件夹中的文件。 启动Visual Studio.文件 > 新建 > 项目 > Visual C# > WPF&#xff08;也可以使用WF&#xff09; 输入程序名称选择存储路径确定在解决方案资源管理器中…

(学习日记)2023.06.06

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…