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

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.mzph.cn/pingmian/43202.shtml

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

相关文章

Python入门 2024/7/8

目录 数据容器 dict(字典,映射) 语法 定义字典字面量 定义字典变量 定义空字典 从字典中基于key获取value 字典的嵌套 字典的常用操作 新增元素 更新元素 删除元素 清空字典 获取全部的key 遍历字典 统计字典内的元素数量 练习 数据容器的通用操作…

linux环境下echo命令简单测试端口是否连通——筑梦之路

语法格式 echo > /dev/tcp/目标主机地址/端口号 示例 echo > /dev/tcp/example.com/80 当命令执行后,若端口是开放的,命令不会有任何输出并且会立即返回命令提示符;若端口未开放或连接失败,则可能由于网络问题、防火墙限…

在公司的业务杂记1之多选部门且主表没有部门字段(子表查询)

原型 1.新建,上传报告可多选部门 2.查询,可多选部门 数据库(Postgresql) 方式一 新增字段Jsonb: CREATE TABLE public.admin_report (admin_report_uuid uuid DEFAULT gen_random_uuid() NOT NULL,admin_report_tit…

java —— JSP 技术

一、JSP &#xff08;一&#xff09;前言 1、.jsp 与 .html 一样属于前端内容&#xff0c;创建在 WebContent 之下&#xff1b; 2、嵌套的 java 语句放置在<% %>里面&#xff1b; 3、嵌套 java 语句的三种语法&#xff1a; ① 脚本&#xff1a;<% java 代码 %>…

安全防御第三天(笔记持续更新)

1.接口类型以及作用 接口 --- 物理接口 三层口 --- 可以配置IP地址的接口 二层口 普通二层口 接口对 --- “透明网线” --- 可以将一个或者两个接口配置成为接口对&#xff0c;则 数据从一个接口进&#xff0c;将不需要查看MAC地址表&#xff0c;直接从另一个接口出&#xff1b…

机器学习模型运用在机器人上

机器学习模型在机器人技术中的应用非常广泛&#xff0c;涵盖了从简单的运动控制到复杂的认知和交互功能。以下是几种机器学习模型在机器人上的典型应用&#xff1a; 感知与识别&#xff1a; 计算机视觉&#xff1a;使用卷积神经网络&#xff08;CNNs&#xff09;识别和理解视觉…

汇川CodeSysPLC教程 Modbus变量编址

线圈&#xff1a;位变量&#xff0c;只有两种状态0和1。汇川PLC中包含Q区及SM区等变量。 寄存器&#xff1a;16位&#xff08;字&#xff09;变量&#xff0c;本PLC中包含M区及SD区等变量 说明&#xff1a; 汇川HMI的专用协议使用不同功能码&#xff1a;在访问SM时&#xff0c…

Python--并发编程--协程

概念 协程是轻量级的线程&#xff0c;它是程序员管理的并发机制&#xff0c;使得在一个线程中程序可以在多个函数之间交替运行。 Python中主要通过asyncio模块实现协程。 协程函数 用async修饰的函数 import asyncio# func为协程函数 async def func():await asyncio.slee…

Linux开发:进程间通过Unix Domain Socket传递文件描述符

Linux开发:进程间通过Unix Domain Socket传递数据-CSDN博客 介绍了通过UDS传递数据 实际上当需要传递大量的数据时,可以通过UDS直接传递文件描述符,这样接收文件描述符的一方,可以直接从传递过来的文件描述符读取数据 先举例说明: //uds_fd.hpp #pragma once #include &…

时尚品牌GOODBAI好人好事系列纪录片——Jupiter乐队的热血与梦想

时尚品牌GOODBAI推出的好人好事系列纪录片迎来了第二期&#xff0c;本期特别邀请了充满年轻活力的Jupiter乐队。纪录片通过真实的镜头&#xff0c;记录了他们在排练室中充满热血和灵感的创作过程&#xff0c;面对冷清观众席的微妙情绪&#xff0c;以及对未来的深刻思考和殷切期…

2024HW必修高危漏洞集合_v4.0

高危风险漏洞一直是企业网络安全防护的薄弱点&#xff0c;也成为HW攻防演练期间红队的重要突破口;每年 HW期间爆发了大量的高危风险漏洞成为红队突破网络边界防护的一把利器,很多企业因为这些高危漏洞而导致整个防御体系被突破、甚至靶标失守而遗憾出局。 HW 攻防演练在即&…

Vue的仓库是什么

Vue的仓库在广义上可以指存放Vue.js项目相关代码、组件、工具等资源的集合&#xff0c;这些资源可能托管在GitHub、GitLab等代码托管平台上。然而&#xff0c;在更具体的语境下&#xff0c;Vue的仓库可能指的是以下几个方面的内容&#xff1a; 1. Vue官方仓库 Vue.js核心库仓…

如何做一个透明度渐现且向上位移逐行出现的文字效果

前言 在这个夜黑风高的夜晚&#xff0c;你的眼睛已经开始有些疲惫。你的手指在键盘上轻轻地敲击着&#xff0c;仿佛在弹奏一首无声的夜曲。你的思绪在代码的海洋中飘荡&#xff0c;寻找着最后一行需要完成的代码。就在这时&#xff0c;你的老板走了过来&#xff0c;他的脸上带…

MySQL高级----InnoDB引擎

逻辑存储结构 表空间 表空间(ibd文件)&#xff0c;一个mysql实例可以对应多个表空间&#xff0c;用于存储记录、索引等数据。 段 段&#xff0c;分为数据段&#xff08;Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment)&#xff0c;InnoDB是…

GNU/Linux - Kconfig Language - 2

Kconfig syntax 配置文件描述了一系列菜单条目&#xff0c;每一行都以一个关键字开头&#xff08;帮助文本除外&#xff09;。以下关键字可结束一个菜单条目&#xff1a; The configuration file describes a series of menu entries, where every line starts with a keyword…

java 如何获取一个空的DATE对象

一&#xff1a;概述 在 Java 中&#xff0c;获取一个空的 Date 对象有多种方法。本文将介绍几种常用方法&#xff0c;并提供实际案例。 二&#xff1a;具体说明 <1>使用构造函数 Java 的 Date 类有多个构造函数&#xff0c;其中有一个无参构造函数&#xff0c;可以用于创…

ubuntu优化

rootlocalhost:~# grep -E "^(PermitRootLogin|GSSAPIAuthentication|UseDNS)" /etc/ssh/sshd_config PermitRootLogin yes GSSAPIAuthentication no UseDNS norootlocalhost:~# systemctl restart sshd#此时就可以设置root密码了rootlocalhost:~# passwd New passw…

基于深度学习的频谱分析

基于深度学习的频谱分析是一种利用深度学习算法处理和分析频谱数据的技术。频谱分析广泛应用于通信、雷达、医学成像、音频处理和地震波分析等领域。以下是关于这一领域的系统介绍&#xff1a; 1. 任务和目标 频谱分析的主要任务是从频谱数据中提取有用信息&#xff0c;具体目…

Http网络通信流程

目录 DNS域名解析 建立TCP连接 发送HTTP请求 服务器处理请求 发送HTTP响应 浏览器接收并解析响应 关闭TCP连接 DNS域名解析 步骤描述:浏览器根据用户输入的URL进行DNS域名解析,将域名转换为相应的IP地址。这是HTTP通信流程中的第一步,确保浏览器能够找到正确的Web服…

文本到图像的革新:自动化Prompt优化的UF-FGTG框架

在文本到图像合成领域&#xff0c;已经能够由文本描述直接生成图像。然而&#xff0c;尽管这一技术带来了无限的可能性&#xff0c;它仍然面临着一个关键挑战&#xff1a;如何设计出能够引导模型生成高质量图像的提示&#xff08;prompts&#xff09;。尤其是对于初学者而言&am…