tomcat的优化和tomcat和nginx实现动静分离:

news2024/11/15 7:13:31

tomcat的优化

tomcat自身的优化

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

优化tomcat的启动速度。

file:/dev/urandom

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

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

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

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

port 8080 http 80

8443 https 443

接收客户端https的请求。

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

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

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

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

enableLookups:是否支持反向解析,true是禁用 false是开启。

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

connectionUploadTimeout:上传的超时时间

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

compression:是否最对响应数据进行压缩,on就是开启,off就是关闭。

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

compression="on"

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

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

compressableMimeType="text/plain,video/mp4" 压缩类型,指定对哪些类型的文件进行压缩。

常用的页面类型:

文本类型:text/plain,text/html,text/css,text/javascript

图片类型:image/jpg,image/jpge,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.ipv4.tcp_sack=1 启用有选择的应答,提高tcp的处理性能。

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

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

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

net.ipv4.ip_local_range=1024

1024-65000设定的端口范围。

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

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

jvm优化

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

-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实现动静分离:

访问nginx就是静态页面,

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

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

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

相关文章

什么是离散化?

离散化 题目 你会这个题 吗? 题目 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0 0 0。 现在,我们首先进行 n n n 次操作,每次操作将某一位置 x x x 上的数加 c c c。 接下来,进行 m m m 次询问&#x…

方圆资源网,方圆资源官网

在当今这个信息化高速发展的时代,方圆资源网络已成为推动社会进步、促进经济发展的重要力量。方圆资源网不仅汇聚了海量的信息资源,更为我们提供了一个高效、便捷的信息交流平台。本文旨在详细介绍资源网的概念、特点、功能以及其在现代社会中的重要意义…

基于Java的数码论坛系统设计与实现

你好,我是计算机领域的研究者。如果你对数码论坛系统开发感兴趣或有相关需求,欢迎联系我。 开发语言: Java 数据库: MySQL 技术: Java技术、MySQL数据库、B/S架构、SpringBoot框架 工具: Eclipse、MySQ…

Django文档简化版——Django快速入门——创建一个基本的投票应用程序

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应(1)创建项目(2)用于开发的简易服务器(3)创建投票应用(4)编写第一个视图1、编写…

数据库基础复习

数据库简介 关系型数据库:Mysql 、Oracle 、SqlServer.... DB2 达梦 非关系型数据库:Redis 、MongoDB... MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管…

【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 日期处理,提取年份、月份2.4 经费处理2.5 天数处理 🏳️‍🌈 3. Pyecharts数据可视化3.1 出发日期_…

mysql在linux系统下重置root密码

mysql在linux系统下重置root密码 登录服务器时候mysql密码忘记了,没办法只能重置,找了一圈,把行之有效的方法介绍在这里。 错误展示: 我还以为yes就可以了呢,这是不行的意思。 关掉mysql服务 sudo systemctl stop …

基于大数据的电商产品评论数据分析与可视化--Python

基于大数据的电商产品评论数据分析与可视化 1绪论 1.1研究背景与意义阐述 随着电子商务领域的迅猛扩张,电商平台累积了海量的用户评价信息。这些建议不只是包含了消费者对产品的评价和经验分享,更重要的是,它们包含了丰富且价值巨大的信息。深度分析在线用户反馈不仅揭示…

【java web 01】3小时快速学习前端知识(收藏备用)

3小时快速学习前端知识【全栈专用】 一、教程简介1.1 Java 开发为何学Web技术1.2 课程设计1.3 课前准备 二、HTML2.1 Html简介2.1.1 HTML、CSS、JS分别有什么作用2.1.2 什么是HTML2.1.3 什么是标记语言 2.2 Hello,Html2.2.1 HTML基础结构2.2.2 专业词汇2.2.3 语法细…

SpringBoot后端验证码-防止密码爆破功能

一、简介 为了防止网站的用户被通过密码典爆破。引入验证码的功能是十分有必要的。而前端的验证码又仅仅是只防君子不防小人。通过burpsuit等工具很容易就会被绕过。所以后端实现的验证码才是对用户信息安全的一大重要保障。 实现思路: 1.引入图形生成的依赖 2.生成…

一文揭秘:中小企业选择做软文营销推广的优势有哪些?

在当今这个信息泛滥、注意力稀缺的时代,中小企业作为经济活力的重要组成部分,面临着前所未有的机遇与挑战。而相比于硬广告的直接灌输,软文营销推广以其独特的魅力,成为了中小企业提升品牌形象、吸引目标客户的重要手段。今天投媒…

关于腾讯的那些事(1月新闻纪要)

腾讯AI Lab与Robotics X 2023年度回顾 这份文件是腾讯AI Lab与Robotics X 2023年度回顾,主要回顾了腾讯在人工智能和机器人领域的研究进展、技术创新及成果应用。以下是文件的核心内容总结: 生成式AI的崛起与影响: 生成式AI的崛起彻底革新了…

【分布式系统】注册中心Zookeeper

目录 一.Zookkeeper 概述 1.Zookkeeper 定义 2.Zookkeeper 工作机制 3.Zookkeeper 特点 4.Zookkeeper 数据结构 5.Zookkeeper 应用场景 统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 6.Zookkeeper 选举机制 第一次启动选举机制 非第一次…

paddleocr运行报错?谈谈解决思路。

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

使用Keil 点亮LED灯 F103ZET6

1.新建项目 不截图了 2.startup_stm32f10x_hd.s Keil\Packs\Keil\STM32F1xx_DFP\2.2.0\Device\Source\ARM 搜索startup_stm32f10x_hd.s 复制到项目路径,双击Source Group 1 3.项目文件夹新建stm32f10x.h, 新建文件main.c #include "stm32f10x…

储能电源性能测试方案:纳米软件电源测试系统自动化测试服务

储能电源是什么?   储能电源主要由电池组、充电控制器、逆变器、车规级电芯、外壳等组成,是一种能够将电能储存起来并在需要时释放的设备,能够提供稳定、可靠的电力供应。因便携、轻便、环保等特点,储能电源在家用电子设备、车载…

30 华三华为STP

一 为什么要用到STP协议 在开启STP协议后 计算机之间互通 关闭生成树协议后 不能实现互通 为啥 逻辑环路 开通了STP 全部互通 PC>ping 192.168.1.3Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break From 192.168.1.3: bytes32 seq1 ttl128 time47 ms From 192.168.…

昇思25天打卡营-mindspore-ML- Day14-VisionTransformer图像分类

今天学习了Vision Transformer图像分类,这是一种基于Transformer模型的图像分类方法,它不依赖卷积操作,而是通过自注意力机制捕捉图像块之间的空间关系,从而实现图像分类。 基本原理: 图像分块: 将原始图像划分为多个…

十二、数组

1. 一维数组的创建和初始化 数组是一组相同类型元素的集合。 变长数组是不能初始化的。 数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。 例如上图 char ch3[ ]"abc";里面方的就是 a b c \0 char ch3[ …

Android 性能优化之启动优化

文章目录 Android 性能优化之启动优化启动状态冷启动温启动热启动 耗时检测检测手段TraceView使用方式缺点 Systrace环境配置使用方式TraceView和Systrace比较 AOP统计耗时环境配置使用 优化白屏优化异步加载优化环境配置使用 延迟加载优化AppStartup 源码下载 Android 性能优化…