当前位置: 首页 > news >正文

tomcat的优化

tomcat的优化

tomcat自身的优化
内核的优化
jvm优化
tomcat 的并发处理能力不强,大项目不适用tomcat作为动态的中间件(K8S,Python rubby),小项目使用(内部使用的)

 优化tomcat的启动速度。117 securerandom.source=file:/dev/urandom    非阻塞的(不依赖系统的终端,进程忙也不会进入等待状态,所有处理速度相对较快)如果对应用的安全性要求比较高,/dev/random默认的配置不适合生产环境,可能频繁的出现假死,需要不停的重启
根据生产环境的实际情况自行测试。(测试稳定性)69               port="8080" protocol="HTTP/1.1"70                connectionTimeout="20000"71                redirectPort="8443"  8080是http端口    8443是https端口(接受客户端https端口)maxThreads="500" :tomcat使用线程来处理接受请求的个数。也就是tomcat最多可以创建多少个线程。默认200  一般1000不一定
mixSpareThreads:最小空闲数线程,tomcat开启之后,没人使用也会有线程代码,默认值是10
maxSpareThreads:最大空闲数线程,一旦线程总数超过了这个最大值,tomcat就会关闭不再需要的其他线程。默认是-1,不限制。(一般不设置)
connectionTimeout="20000"  网络连接超时时间,单位毫秒,设置成0表示永不超时(一般不能为0)。一般默认
enableLookups:是否支持反向解析,true,false。关闭,false,提高处理速度
disableUplaodTimeout:上传时是否使用超时机制,10秒,true禁用,false开启
connectionUploadTimeout:上传的超时时间
acceptCount:当所有可用的处理请求的线程都被使用时,可以接入请求的最大队列长度,如果超过这个数字的请求将会不予处理(直接丢弃,默认100)
compression:是否对响应数据进行压缩,on就是开启,off就是关闭
开启压缩之后,可以有效的减少页面的大小(文本不压缩,图片,音频,视频一般可以减少三分之一)
compression="on"
compressionMinSize:响应压缩的最小值,只要响应报文大于这个值才会进行压缩。如果开启压缩,默认值是2048(2M)
noCompressionUserAgents="浏览器名称" 对于这些浏览器,不启用压缩。
compressableMinmeType="" 压缩类型,指定对那些类型的文件进行压缩。
常用的页面类型:
文本类型:text/plain  text/html,text/css.text/javascript
图像类型:image/jpg,image/jpeg,image/gif.
音频:audio/ogg,wav,mpeg
视频:video/mp4.webm,rmvb,quicktime
应用程序:application/pdf,json,xml

内核优化:系统安全

如何在内核当中进行优化?

1、打开系统的文件数 
[root@test5 conf]# vim /etc/security/limits.conf 
打开文件数的限制,系统初始化第一步要做的事情。
2、内核参数文件
[root@test5 conf]# 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_port_range=1024 65000   设定系统的端口范围
net.ipv4.tcp_fin_timeout=10           设置tcp关闭连接超时的时间
net.ipv4.tcp_keepalive_time        设置tcp的keepaliv
[root@test5 conf]# # sysctl -a  #查看
[root@test5 conf]# # sysctl -p  #立即生效
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自带垃圾回收机制,不用的资源自动回收,回收之后不需要重新计算堆区的大小
堆区:新生代,中生代,老年代
每生成一个新的对象,对象占用的内存空间就是新生代空间。
垃圾回收对堆区当中的资源进行回收之后,新生代没有被回收的资源就转移到中生代,中生代会转换到老年代。
整个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的静态页面

8009就是ajp的默认端口。

tomcat和nginx实现动静分离:
访问nginx就是静态页面,
nginx代理 index.jsp 可以直接访问tomcat的静态页面

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • verilog bug记录——正点原子spi_drive存在的问题
  • Go语言并发编程-Goroutine调度
  • 51单片机嵌入式开发:12、STC89C52RC 红外解码数码管显示
  • [开源]语雀+Vercel:打造免费个人博客网站
  • 顶顶通呼叫中心中间件-被叫路由、目的地绑定(mod_cti基于FreeSWITCH)
  • Leetcode二分搜索法浅析
  • MySQL中的幻读究竟是怎么回事?
  • 0718vscode问答
  • 高性能分布式IO系统BL205 OPC UA耦合器
  • Mojo 编程语言简介
  • 使用LVS+NGinx+Netty实现数据接入
  • FFmpeg播放视频
  • 图扑低代码数字孪生 Web SCADA 智慧钢厂
  • 数据挖掘新技能:Python爬虫编程指南
  • StarRocks on AWS Graviton3,实现 50% 以上性价比提升
  • C语言笔记(第一章:C语言编程)
  • Java基本数据类型之Number
  • PHP的Ev教程三(Periodic watcher)
  • 开发基于以太坊智能合约的DApp
  • 浏览器缓存机制分析
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端技术周刊 2019-02-11 Serverless
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用SAX解析XML
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 鱼骨图 - 如何绘制?
  • Java数据解析之JSON
  • Java性能优化之JVM GC(垃圾回收机制)
  • puppet连载22:define用法
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #pragma multi_compile #pragma shader_feature
  • #pragma 指令
  • #Z0458. 树的中心2
  • $ git push -u origin master 推送到远程库出错
  • (2020)Java后端开发----(面试题和笔试题)
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (55)MOS管专题--->(10)MOS管的封装
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (二开)Flink 修改源码拓展 SQL 语法
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (一)认识微服务
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)Oracle存储过程编写经验和优化措施
  • (转)VC++中ondraw在什么时候调用的
  • ****三次握手和四次挥手
  • ... 是什么 ?... 有什么用处?
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET C# 操作Neo4j图数据库
  • .NET Compact Framework 3.5 支持 WCF 的子集