• 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的动态页面。

  • 相关阅读:
    uni-app的uni-list在真机调试中无法显示
    学GoWorld,go 1.21
    spring-cloud-starter-dubbo不设置心跳间隔导致生产者重启no Provider问题记录
    从源码入手探究一个因useImperativeHandle引起的Bug
    OpenShift 4 - 使用 Debezium 捕获变化数据,实现MySQL到PostgreSQL数据库同步
    什么是无线传输技术,如Wi-Fi、蓝牙和NFC的特点和应用场景
    设计模式之建造者模式
    计算机毕设(附源码)JAVA-SSM加油站管理信息系统
    重新认识下JVM级别的本地缓存框架Guava Cache(2)——深入解读其容量限制与数据淘汰策略
    LED红外照明器市场现状及未来发展趋势分析
  • 原文地址:https://blog.csdn.net/m0_71178834/article/details/140274306