tomcat的优化、动静分离

news2024/9/22 4:16:54

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

结果:

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

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

相关文章

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现

注&#xff1a;每个学校每个老师对论文的格式要求不一样&#xff0c;故本论文只供参考&#xff0c;本论文页数达到60页以上&#xff0c;字数在6000及以上。 基于SpringBootVueJS微信小程序技术的图书森林共享小程序设计与实现 目录 基于SpringBootVueJS微信小程序技术的图书森…

自动驾驶-端到端分割任务

上采样 bed of nails interpolation transposed convolutions 1. 上采样 (Upsampling) 上采样是一种技术&#xff0c;用于增加数据集中的样本数量或是提高信号的分辨率。在图像处理中&#xff0c;上采样通常指的是增加图像的像素数量&#xff0c;从而使图像变得更大。这可…

MySQL 中的几种锁

MySQL 中的锁 #按锁粒度如何划分? 按锁粒度划分的话&#xff0c;MySQL 的锁有&#xff1a; 表锁&#xff1a;开销小&#xff0c;加锁快&#xff1b;锁定力度大&#xff0c;发生锁冲突概率高&#xff0c;并发度最低;不会出现死锁。行锁&#xff1a;开销大&#xff0c;加锁慢…

Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery

目录 开始 为什么需要服务发现机制 File Service Discovery&#xff08;file_sd&#xff09; 基本概念 配置方式 使用案例 HTTP Service Discovery&#xff08;http_sd&#xff09; 基本概念 配置方式 使用案例 开始 为什么需要服务发现机制 我们知道在 Prometheus …

【Linux】:文件fd

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来关于文件fd的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据…

Java二十三种设计模式-单例模式(1/23)

引言 在软件开发中&#xff0c;设计模式是一套被反复使用的、大家公认的、经过分类编目的代码设计经验的总结。单例模式作为其中一种创建型模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。本文将深入探讨单例模式的概念、实现方式、使用场景以及潜…

C语言 ——— 模拟实现strcpy函数

目录 strcpy函数功能介绍 strcpy函数的模拟实现 strcpy函数功能介绍 学习并使用strcpy函数-CSDN博客 strcpy函数的模拟实现 代码演示&#xff1a; #include<stdio.h> #include<assert.h> char* my_strcpy(char* destination, const char* source) {assert(des…

单目3D和bev综述

文章目录 SOTA2D 检测单目3d检测3d bev cam范式1 Transformer attention is all you need 20172 ViT vision transformer ICLR 2021google3 swin transformer 2021 ICCV bestpaper MS4 DETR 20205 DETR3D 20216 PETR 20227 bevformerLSSbevdetcaddn指标 mAP NDS标注&#xff1a…

kubernetes——Istio(三)

一、安全 将单一应用程序分解为微服务可提供各种好处&#xff0c;包括更好的灵活性、 可伸缩性以及服务复用的能力。但是&#xff0c;微服务也有特殊的安全需求&#xff1a; 为了抵御中间人攻击&#xff0c;需要流量加密。为了提供灵活的服务访问控制&#xff0c;需要双向 TL…

【P2P_BMA_P2MP_NBMA】

基本概念介绍 1. BMA&#xff08;Broadcast&#xff09; 广播型多路访问技术&#xff0c;在一个MA&#xff08;多路访问&#xff0c;在一个网段内的节点数量不限制。&#xff09;网络中同时存在广播机制。 特点&#xff1a; 允许将数据包广播到网络上的所有主机。路由器之间…

科普文:微服务技术栈梳理

概叙 如上两图所示&#xff0c;微服务架构下&#xff0c;需要的组件很多&#xff0c;上面中也并未列全。下面将梳理一下国内微服务架构下&#xff0c;用到的技术栈&#xff0c;仅供参考。 科普文&#xff1a;12种常见的软件架构-CSDN博客 没有最好的架构&#xff0c;只有最适…

开启音乐新纪元,AI人工智能创新歌词

在音乐的漫长历史长河中&#xff0c;每一次的创新都如同璀璨星辰&#xff0c;照亮了前行的道路。如今&#xff0c;人工智能的崛起正引领着音乐创作步入一个全新的纪元&#xff0c;为歌词领域带来了前所未有的变革。 “妙笔生词智能写歌词软件&#xff08;veve522&#xff09;”…

智慧园区智能化解决方案PPT(173页)

智慧园区智能化解决方案摘要 智慧园区智能化解决方案是一项综合性的系统工程&#xff0c;它通过集成先进的信息技术&#xff0c;实现园区管理的自动化、智能化&#xff0c;提高园区的安全性、效率和舒适度。本文详细介绍了某智慧园区项目的规划与设计&#xff0c;该项目建筑面…

python的字符串

字符串 简单操作 创建 利用 ‘ ’ 或 “ ” 将字符或数字包裹起来的都为字符串 a"你好" 格式化字符串 元组的字符格式化 字符串格式化函数 srt.format() f格式化 方法 split()//指定分割符经行分割 strip()//指定移除字符头尾的字符 join()//指定序列中的字符连接成新…

C#学习

C#学习 1.B站丑萌气质狗C#的循环-判断泛型错误处理面向对象static的使用定义showInfo类和Hero类 在这里插入图片描述 然后在该解决方案add新建一个类库&#xff0c;点击rebuild&#xff0c;会在bin文件夹下生成.dll文件 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direc…

SAC-IA粗配准算法记录

1. 算法思路 SAC-IA(Sample Consensus Initial Aligment,SAC-IA)粗配准算法是一种基于局部特征描述子的点云粗配准算法,其需要计算点云的快速点特征直方图(FPFH)来保持对应点对之间的相似关系,根据相似关系来搜索点云中的对应点。其基本原理是采用采样一致性的思想,通过查…

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意&#xff1a;Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

工具推荐|语音轻松记笔记,AI帮你识别和润色

# 你日常有没有遇到这样的场景&#xff1f; 偶尔有一些奇思妙想想要记录下来&#xff0c;但没有一个轻量的工具&#xff0c;往往会想着想着就把这个想法抛之脑后。特别是搞短视频的&#xff0c;你也许希望把当时的想法录下来&#xff0c;稍微剪辑下就能出一条不错的口播视频。…

外泌体相关基因肝癌临床模型预测——2-3分纯生信文章复现——5.拷贝数变异及突变图谱(1)

内容如下: 1.外泌体和肝癌TCGA数据下载 2.数据格式整理 3.差异表达基因筛选 4.预后相关外泌体基因确定 5.拷贝数变异及突变图谱 6.外泌体基因功能注释 7.LASSO回归筛选外泌体预后模型 8.预后模型验证 9.预后模型鲁棒性分析 10.独立预后因素分析及与临床的相关性分析…

CMU 15-213 CSAPP. Ch9. Virtual Memory

CMU 15-213 CSAPP (Ch1~Ch3) CMU 15-213 CSAPP (Ch5~Ch7) CMU 15-213 CSAPP (Ch8) CMU 15-213 CSAPP (Ch9) CMU 15-213 CSAPP (Ch10) 视频链接 课件链接 课程补充 该课程使用 64位 编译器&#xff01; Ch9. Virtual Memory 9.1 Address spaces 将内存看成数组&#xff0c;物…