tomcat优化

tomcat的优化

tomcat自身的优化

内核优化

jvm优化

tomcat的并发处理能力不强。大项目不适应tomcat作为转发动态的中间件(k8s集群,python rubby),小项目会使用(内部使用的)对外访问不用tomcat

动静分离

优化tomcat的启动速度

vim /usr//java/j

securerandom.source=file:/dev/urandom非阻塞的版本不依赖系统的中断进程忙也不会进入等待状态 所以处理速度相对较快

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

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

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

tomcat /conf配置文件

sever

http 80

https 443

接受客户端https的请求

tomcat优化

1.1系统优化

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

maxThreads=“”

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

minSpareThreads=“”

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

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

enableLookups:是否支持反向解析,true,false。一边都是关闭的,false,提高处理速度

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

上传超时时间要设置

connectionUploadTimeout:上传的超时时间

先有超时disableUplaodTimeout才有connectionUploadTimeout

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

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

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

compression=“on”

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

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

conmpressableMimeType="压缩类型"指定对那些类型的文件进行压缩

“text/plain,video/mp4”

常见的页面类型:

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

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

音频:audio/ogg,audio/wav,audio/mepeg

视频:video/mp4,videp/webm./videp/rmvb.,video/quicktime

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

多个之间用,隔开

1.2内核优化:系统安全的优化补齐

内核优化的配置文件: vim/etc/security/limits.conf

1、vim /etc/security/limits.conf

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

在这里插入图片描述

2、内核参数文件:

vim /etc/sysctl.conf

sysctl -a 默认参数

Kernel 内核

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

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

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

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、JVM优化

java -jar 123.jar &要加&
在这里插入图片描述

JAVA_OPTS=“$JAVA_OPTS -server -Xms2048m -Xmx2048m -Xmn768m -XX:ParallelGCThreads=2 -XX:PermSize=1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -XX:+DisableExplicitGC”
在这里插入图片描述

MVu9-1720581794833)cygwin=false 118下面

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

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

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

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

堆区有3类 :新生代 中生代 老年代。

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

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

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

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

-XX:PermSize=1024m 设置非堆内存的初始值,也就是java中的持久代内存的大小,一般设置为物理内存的1/4 建议设计整个jvm内存的一半 在非堆内存中的不会被垃圾机制回收

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

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

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

PS Eden Space 堆内存 创建一个新的对象都在堆内存中永生代

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

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

Code Cache 非堆内存,不会被垃圾机制回收 存储已经编译的代码

Compressed Class Space 非堆内存 存储已经压缩过的类定义

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

ajp-nio-8009

ajp是协议也是tcp协议当中的一种 nio:异步非阻塞的通信方式

ajp协议的作用tomcat服务器和web服务器之间进行连接的协议,可以提供负载均衡和高效转发 nio可以提高并发的处理能力8009就是ajp的默认端口

堆:存储新创建的对象。

非堆:存储编译之后的代码,或者是压缩后的类,或者是类的元数据

如何配置上面的配置:

-8009**

ajp是协议也是tcp协议当中的一种 nio:异步非阻塞的通信方式

ajp协议的作用tomcat服务器和web服务器之间进行连接的协议,可以提供负载均衡和高效转发 nio可以提高并发的处理能力8009就是ajp的默认端口

堆:存储新创建的对象。

非堆:存储编译之后的代码,或者是压缩后的类,或者是类的元数据

如何配置上面的配置:

进入/usr/local/tomcat/bin/catalina.sh

相关推荐

  1. tomcat 如何优化

    2024-07-10 20:14:03       59 阅读
  2. Tomcat基础与优化

    2024-07-10 20:14:03       66 阅读
  3. Tomcat部署及优化

    2024-07-10 20:14:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 20:14:03       114 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 20:14:03       124 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 20:14:03       101 阅读
  4. Python语言-面向对象

    2024-07-10 20:14:03       112 阅读

热门阅读

  1. 设计模式——原型模式

    2024-07-10 20:14:03       28 阅读
  2. grblHAL的代码学习笔记和解读

    2024-07-10 20:14:03       31 阅读
  3. Spring Boot中的多租户架构实现

    2024-07-10 20:14:03       30 阅读
  4. 单链表的学习与基础运用p

    2024-07-10 20:14:03       33 阅读
  5. 如何正确使用Redisson实现分布式锁

    2024-07-10 20:14:03       27 阅读
  6. 开源软件项目的崛起:机遇、挑战与个人成长

    2024-07-10 20:14:03       25 阅读
  7. Electron 跨平台桌面应用开发工具

    2024-07-10 20:14:03       23 阅读