tomcat的优化、动静分离

tomcat的优化

tomcat自身的优化

tomcat的并发处理能力不强,大项目不适应tomcat做为转发动态的中间件(k8s集群,pytnon rubby),小项目会使用(内部使用的)动静分离

默认配置不适合生产环境,可能频繁出现假死,需要不停的重启。

根据生产环境的实际情况,自行测试。

优化tomcat的启动速度

file:/dev/urandom

非阻塞的版本,不依赖系统的终端,进程忙也不会进入等待状态,所以处理速度相对较快

如果对应用的安全性要求比较高,只能用/dev/random

配置文件优化

vim server.xml

maxThreads:tomcat使用线程来处理接收请求的个数,tomcat最多可以创建多少个线程,默认200个

minSpareThreads:最小空闲数线程,tomcat开启之后,没人使用也会有进程待命,默认值是10

maxSpareThreads:最大空闲数线程,一旦线程总数超过这个值,tomcat就会关闭不再需要的线程,默认是-1,不限制,一般不设置

connectionTimeout="20000" :网络连接超时时间,单位是毫秒,设置成0,则永不超时。默认即可

enableLookups:是否支持反向解析,true,false,关闭,false,可以提高处理速度。

disableUplaodTimeout:上传时是否使用超时机制,10s,true禁用和false开启

connectionUploadTimeout:上传的超时时间

acceptCount:当所有可用的处理请求的线程数都被使用时,可以接入请求的最大队列长度,超过了这个数的请求,将被不予处理(直接丢弃),默认100个

comperssion:是否对响应数据进行压缩,on开启,off关闭

开启压缩之后,可以有效的减少页面的大小(文本无效,图片、音频、视频)一般可以减少三分之一,节省带宽,默认off

comperssion="on"

comperssionMinSize:表示响应压缩的最小值,只有响应报文大于这个值才会进行压缩。如果开启了压缩,默认值2048

noCompressionUserAgents="浏览器名称":对于这些浏览器,不启用压缩

compressableMimeType="页面类型":压缩类型,指定对哪些类型的文件进行压缩

常用的页面类型:

文本类型:text/plain,text/html,text/javacript

图片类型:image/jpg,image/jpeg,image/gif

音频:audio/ogg,wav,mpeg

视频:video/MP4,webm,rmvb。quicktime

应用程序:application/pdf,json,xml

内核优化

系统安全的优化补齐

内核优化的配置文件:

1、vim /etc/security/limits.conf

打开文件数的限制。系统初始化第一步要做的事情

2、内核参数文件:

vim /etc/sysctl.conf

net.ipv4.ip_forward=0/1 :禁用或者开启数据包的转发功能,要做路由器必须打开,0是关,1是开

net.ipv4.tcp_max_tw_buckets=2000:允许timewait的最大数量

net.ipv.4tcp_sack=1:启用有选择的应答,提高tcp的处理性能

net.core.netdev_max_backlog=262144:网络接口接收数据包队列最大的大小

vm.swappiness=0,关闭内存的交换行为,不适用交换分区,k8s默认就不能适用交换分区,否则会报错

net.ipv4.tcp_max_orphans:系统允许的最大的tcp连接数量

net.ipv4.ip_local_port_range=1024 65000

1024-65000 设定系统的端口范围

net.ipv4.tcp_fin_timeout=10:设置tcp关闭连接的超时时间

net.ipv4.tcp_keepalive_time:设置tcp的keepailve包的探测包的发送频率,用于检测连接状态

jvm优化

vim  catalina.sh

JAVA_OPTS="$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC" cygwin=false

各端含义(理解即可):

-Xms2048m:java初始化堆的大小,分配jvm的最小内存,cpu的性能比较高,可以分配的高一点

-Xmx2048m:java堆的最大值,也就是jvm的最大内存,取决于物理内存的大小,官方建议设置成与xms一样的值。设置成物理内存的一半

-Xmn768m:新生代内存的大小,官方推荐,设置成jvm内存最大值的3/8

         java自带垃圾回收机制,java进行垃圾回收之后不需要重新计算堆区的大小

         堆区:新生代,中生代,老年代

         每生成一个新的对象,对象占用的内存空间就是新生代空间

         垃圾回收对堆区当中的资源进行回收之后,新生代没有被回收的资源就转移到中生代

         中生代的就会转移到老年代

          整个jvm堆的大小:新生代+老年代+永久代(系统自带的)

-XX:ParallelGCThreads=2:配置并行收集器的线程数,同时有多少个线程一起进行来及回收,配置成cpu的一半

-XX:PermSize=1024m:设置非堆内存的初始值,之久代内存的大小,默认是物理内存的1/4,建议设置成整个jvm内存的一半

         非堆内存是不会被java的垃圾回收机制处理的

-XX:MaxPermSize=1024m:非堆内存的最大值,和初始值一致即可

-Djava.awt.headless=true:防止在linux访问的情况下,web页面的图片不能打开

-XX:+DisableExplicitGC:老年代的收集算法,缩短垃圾回收机制回收的时间

各段含义:

PS Eden Space :堆内存,创建一个新的对象都在堆内存中万恒

PS Old Gen :堆内存,长期存活的对象,永生代

PS Survivor Space :堆内存,PS Eden Space和PS Old Gen之间的存活对象,中生代

Code Cache :非堆内存,存储以及编译的代码

Compressed Class Space :非堆内存,存储以及压缩过的类定义

Metaspace:非堆内存,存储元数据的区域

ajp-nio-8009

ajp-nio:连接器的类型,ajp协议,nio:异步非阻塞的通信方式

ajp协议:tomcat服务器和web服务器之间进行连接的协议,可以提供负责均衡和高效转发,nio可以提高并发的处理能力

8009就是ajp的默认端口

tomcat和nginx实现动静分离

实验1:

访问nginx就是静态页面

通过nginx代理 index.jsp 可以访问tomcat的动态页面

1.分别在tomcat1和tomcat2做动态页面

2、

分别在tomcat1和tomcat2添加站点

cd conf

vim server.xml

先删除原有的站点

然后添加

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />

启动

查看端口是否启动

3、配置nginx部分

cd /usr/local/nginx/conf/

先备份

cp nginx.conf nginx.conf.bak

vim nginx.conf

重启nginx

systemctl restart nginx

结果:

实验2

访问index.html就是静态页面,访问index.jsp就是访问tomcat的动态页面

在实验1基础上,添加nginx2 nginx3,做一个四层代理

cd /usr/local/nginx/conf

vim nginx.conf

重启nginx

systemctl restart nginx

结果:

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

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

相关文章

在 PostgreSQL 里如何处理数据的存储优化和查询优化的冲突?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何处理数据的存储优化和查询优化的冲突一、存储优化与查询优化的概述&#xff08;一…

前端实现一键复制功能

1、下载插件 npm i vue-clipboard32.0.0 2、在需要复制的文件中引入插件并使用&#xff1a; JS: import useClipboard from "vue-clipboard3"; const { toClipboard } useClipboard(); HTML: <el-tooltip content"复制内容" placement"top&…

Java 客户端操作 Redis 命令(端口号映射方法,命令演示,注意事项)

文章目录 开放端口号问题引入依赖验证连接通用命令使用set 和 get 命令的使用exists 和 del 命令的使用keys 命令的使用expire 和 ttl 命令type 命令的使用 String 类型命令使用mset 和 mget 命令getrange 和 setrange 命令append 命令incr 和 decr 命令 list 类型命令使用lpus…

05 以物品与用户为基础个性化推荐算法的四大策略

《易经》&#xff1a;“九二&#xff1a;见龙在田&#xff0c;利见大人”。九二是指阳爻在卦中处于第二位&#xff0c;见龙指龙出现在地面上&#xff0c;开始崭露头角&#xff0c;但是仍须努力&#xff0c;应处于安于偏下的位置。 本节是模块二第一节&#xff0c;模块二讲解传…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(六)-人工智能控制的自主无人机用例

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

开源浏览器引擎对比与适用场景:WebKit、Chrome、Gecko

WebKit与Chrome的Blink引擎对比 起源与关系&#xff1a; WebKit最初由苹果公司开发&#xff0c;用于Safari浏览器。后来&#xff0c;WebKit逐渐成为一个独立的开源项目&#xff0c;被多个浏览器厂商采用。Blink是Google基于WebKit项目分支出来的一个浏览器引擎&#xff0c;用于…

自主升级,平稳过渡!麒麟信安保障长沙市智慧交通发展中心CentOS迁移无忧

长沙市智慧交通发展中心围绕综合交通运输协调体系的构建&#xff0c;实施交通运行的监测、预测和预警&#xff0c;面向公众提供交通信息服务&#xff0c;开展多种运输方式的调度协调&#xff0c;提供交通行政管理和应急处置的信息保障。 该中心目前数据日交换量超2亿条&#x…

替换:show-overflow-tooltip=“true“ ,使用插槽tooltip,达到内容可复制

原生的show-overflow-tooltip“true” 不能满足条件&#xff0c;使用插槽自定义编辑&#xff1b; 旧code <el-table-column prop"reason" label"原因" align"center" :show-overflow-tooltip"true" /> <el-table-column pro…

Adminer-CVE-2021-21311

在其4.0.0到4.7.9版本之间&#xff0c;连接 ElasticSearch 和 ClickHouse 数据库时存在一处服务端请求伪造漏洞&#xff08;SSRF&#xff09;。 VPS开启HTTP服务 VPS 开启HTTP 再同时跑POC 确保能访问poc里的链接文件 第一是目标地址 第二个是跳转地址 第三个是监听地址 如果…

【C++】 List 基本使用

C List 基本使用 基本概念 list 是一个序列容器&#xff0c;它内部维护了一个双向链表结构。与 vector 或 deque 等基于数组的容器不同&#xff0c;list 在插入和删除元素时不需要移动大量数据&#xff0c;因此在这些操作上具有较高的效率。然而&#xff0c;访问列表中的特定…

无人机航电系统技术详解

一、系统概述 无人机航电系统&#xff08;Avionics System&#xff09;是无人机飞行与任务执行的核心部分&#xff0c;它集成了飞控系统、传感器、导航设备、通信设备等&#xff0c;为无人机提供了必要的飞行控制和任务执行能力。航电系统的设计和性能直接影响到无人机的安全性…

AIGC产品经理学习路径

基础篇&#xff08;课时 2 &#xff09; AIGC 行业视角 AIGC 的行业发展演进&#xff1a;传统模型/深度学习/大模型 AIGC 的产品设计演进&#xff1a;AI Embedded / AI Copilot / AI Agen AIGC 的行业产业全景图 AIGC 的产品应用全景图 AIGC 职业视角 AI 产品经理/ AIGC…

Linux:信号的概念与产生

信号概念 信号是进程之间事件异步通知的一种方式 在Linux命令行中&#xff0c;我们可以通过ctrl c来终止一个前台运行的进程&#xff0c;其实这就是一个发送信号的行为。我们按下ctrl c是在shell进程中&#xff0c;而被终止的进程&#xff0c;是在前台运行的另外一个进程。因…

Android Viewpager2 remove fragmen不生效解决方案

一、介绍 在如今的开发过程只&#xff0c;内容变化已多单一的fragment&#xff0c;变成连续的&#xff0c;特别是以短视频或者直播为主的场景很多。从早起的Viewpage只能横向滑动&#xff0c;到如今的viewpage2可以支持横向或者竖向滑动。由于viewpage2的adapter在设计时支持缓…

预告 | 博睿数据将亮相第四届中国新能源汽车产业数智峰会

随着数字化、智能化浪潮的汹涌而至&#xff0c;全球汽车产业正站在一个崭新的历史起点上。新能源汽车&#xff0c;作为这场科技革命和产业变革的领跑者&#xff0c;其数智化发展正呈现出前所未有的蓬勃态势。正是在这样的背景下&#xff0c;第四届中国新能源汽车产业数智峰会将…

Windows 虚拟机服务器项目部署

目录 一、部署JDK下载JDK安装JDK1.双击 jdk.exe 安装程序2.点击【下一步】3.默认安装位置&#xff0c;点击【下一步】4.等待提取安装程序5.默认安装位置&#xff0c;点击【下一步】6.等待安装7.安装成功&#xff0c;点击【关闭】 二、部署TomcatTomcat主要特点包括&#xff1a;…

【线程安全】关于死锁问题

文章目录 死锁的基本概念死锁的四个必要条件避免死锁避免死锁的算法死锁检测算法 死锁的基本概念 死锁是指在一组进程中的各个进程均占有不会释放的资源&#xff0c;但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。当然&#xff0c;线程之间同样也有死…

【产品经理】WMS多仓调拨转移说明

对于仓储管理来说&#xff0c;越来越多企业开始应用WMS进行系统化的管理&#xff0c;以提升仓库的作业效率。本文作者从业务流程和基础功能两个方面展开介绍&#xff0c;希望对你有帮助。 一、业务流程 。在线下业务流程拓展&#xff0c;仓库不断增多的过程中&#xff0c;由于…

docker私有仓库harbor安装

Harbor默认安装 下载harbor https://github.com/goharbor/harbor/releases/download/v2.11.0/harbor-offline-installer-v2.11.0.tgz 目前要求docker版本&#xff0c;docker 20.10.10-ce &#xff0c;和docker-compose 1.18.0 查看 docker-compose版本 docker-compose --ver…

【Python】Python模块及常用模块介绍

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言Python 模块(Module)模块的作用模块的创建模块的引入import 语句from…import 语句from…import* 语句 搜索路径常用模块[Python 标准库](https://docs.python.org/zh-cn/3/li…