• tomcat


    tomcat配置

    unpackWARs=“true” autoDeploy=“true”

    unpackWARs  自动解压
    autoDeploy 自动部署
    
    • 1
    • 2

    修改同tomcat 端口为80后启动不了。因为80是特权端口(不大于1023的端口),
    改tomcat 为root用户启动,但这种不安全

    生产tomcat不对外提供服务,用nginx做为代理tomcat

    tomcat 8005 关闭端口
    [root@rocky8 conf]# telnet 127.0.0.1 8005
    Trying 127.0.0.1…
    Connected to 127.0.0.1.
    Escape character is ‘^]’.
    SHUTDOWN
    Connection closed by foreign host

    Centext 配置方式

    Context作用:
    路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
    应用独立配置,例如单独配置应用日志、单独配置应用访问控制

    配置在 访问8080/test 就去访问/data/luo/

    说明:
    path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先级更高
    docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
    reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。

    tomcat 访问日志

          <Host name="n80.luo.com"  appBase="/data/n80"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="n80.luo.com_access_log" suffix=".txt"
                   pattern="%h %l %u %t "%r" %s %b" />
          </Host>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    " 代表双引号

    json格式日志:

          </Host>
          <Host name="n80.luo.com"  appBase="/data/n80"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="n80.luo.com_access_log" suffix=".txt"
                   pattern="{"clientip":"%h","ClientUser":"%l","authenticated":"%u","AccessTime":"%t",&q
    uot;method":"%r","status":"%s","SendBytes":"%b","Query?string":"%q","partner":"%{Referer}i
    ","AgentVersion":"%{User-Agent}i"}"/>
          </Host
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    tomcat 性能优化

    垃圾回收

    指定
    vi /usr/local/tomcat/bin# vim catalina.sh 添加
    JAVA_OPTS=“-Xms1g -Xmx1g”
    -Xms 设置应用程序初始使用的堆内存大小(年轻代
    +老年代)

    -Xmx1
    设置应用程序能获得的最大堆内存
    早期JVM不建议超过32G,内存管理效率下降

    垃圾回收器.

    在 tomcat 开启远程 JMX

    root@ubuntu20:/usr/local/tomcat/bin# vim catalina.sh 
    CATALINA_OPTS="$CATALINA__OPTS \
    -Dcom.sun.management.jmxremote \
    -Dcom.sun.management.jmxremote.port=1234 \
    -Dcom.sun.management.jmxremote.authenticate=false \
    -Dcom.sun.management.jmxremote.ss1=false \
    -Djava.rmi.server.hostname=192.168.74.220"
    
    
    root@ubuntu20:/usr/local/tomcat/bin# netstat -antp|grep   1234
    tcp6       0      0 :::1234                 :::*                    LISTEN      39826/java     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    修改tomcat并发连接
    默认200
    添加:
    root@ubuntu20:/usr/local/tomcat/conf# vi server.xml
    maxThreads=“2000”
    在这里插入图片描述

    maven编译jpress

    克隆代码
     git clone  https://gitee.com/JPressProjects/jpress.git
     编译
    /apps/jpress# mvn clean install package -Dmaven.test.skip=true
    
    • 1
    • 2
    • 3
    • 4

    在Maven中,cleaninstall是两个常用的构建生命周期阶段。下面是它们的含义:

    • clean阶段:执行clean阶段会清理项目目录中生成的所有构建产物,包括编译生成的类文件、打包生成的JAR文件等。这样做可以确保在每次构建之前,项目处于一个干净的状态。

    • install阶段:执行install阶段会将项目的构建产物安装到本地Maven仓库中。这个本地仓库位于你的计算机上,它充当了Maven构建系统的缓存,用于存储项目的依赖关系和构建产物。通过将构建产物安装到本地仓库,其他项目就能够在其依赖声明中引用这些构建产物。

    另外,-Dmaven.test.skip=true是一个Maven命令行选项,用于跳过执行项目的测试。通过设置该选项为true,Maven构建将忽略项目中的测试代码并直接进行构建和安装操作。这在一些情况下可以加快构建的速度,但同时也会跳过项目的测试步骤。

    查看jar包

    cd starter-tomcat/target/
    
    root@server02:/apps/jpress/starter-tomcat/target# ls
    classes  maven-archiver  starter-tomcat-5.0  starter-tomcat-5.0-classes.jar  starter-tomcat-5.0.war
    
    • 1
    • 2
    • 3
    • 4

    拷贝jar包到tomcat目录
    /apps/jpress/starter-tomcat/target# cp starter-tomcat-5.0.war /var/lib/tomcat9/webapps/jpress.war

    显示安装页面
    在这里插入图片描述

    JVM的组成
    JVM的常见垃圾回收器
    JVM的常见启动参数
    JAVA程序出现OOM,如何解决
    看是否是配置的参数内存不够,还是真正的内存不够

    Tomcat的优化方法

    最大连接数
    java优化

    tomca配置参数

    JAVA_OPTS="-server -Xms4g -Xmx4g -Xss512k -Xmn1g -
    XX:CMSInitiatingOccupancyFraction=65 -XX:+AggressiveOpts -XX:+UseBiasedLocking -
    XX:+DisableExplicitGC -XX:MaxTenuringThreshold=10 -XX:NewRatio=2 -
    XX:PermSize=128m -XX:MaxPermSize=512m -XX:CMSFullGCsBeforeCompaction=5 -
    XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -
    XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -
    XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods"
    
    
    
    
    
    JAVA_OPTS 是一个用于设置 Java 虚拟机的运行参数的环境变量。它可以在启动 Java 应用程序时用于配置 JVM 的各种参数。
    
    在你提供的命令中,JAVA_OPTS 环境变量设置了以下参数:
    
    - `-server` :启用服务器模式,优化 Java 虚拟机在长时间运行的服务器应用程序上的性能。
    - `-Xms4g` :设置 Java 堆的初始大小为 4GB。
    - `-Xmx4g` :设置 Java 堆的最大大小为 4GB。
    - `-Xss512k` :设置每个线程的 Java 栈大小为 512KB。
    - `-Xmn1g` :设置年轻代的大小为 1GB。
    - `-XX:CMSInitiatingOccupancyFraction=65` :设置 CMS 收集器触发老年代垃圾收集的占用阈值为 65%。
    - `-XX:+AggressiveOpts` :启用 Java 虚拟机的侵略性优化。
    - `-XX:+UseBiasedLocking` :启用偏向锁优化。
    - `-XX:+DisableExplicitGC` :禁用显式垃圾回收操作。
    - `-XX:MaxTenuringThreshold=10` :设置对象在年轻代和老年代之间晋升的最大阈值为 10。
    - `-XX:NewRatio=2` :设置年轻代和老年代的比例为 1:2。
    - `-XX:PermSize=128m` :设置永久代的初始大小为 128MB。
    - `-XX:MaxPermSize=512m` :设置永久代的最大大小为 512MB。
    - `-XX:CMSFullGCsBeforeCompaction=5` :在进行一次完整的 CMS 垃圾收集之前进行 5 次 CMS 并发收集。
    - `-XX:+ExplicitGCInvokesConcurrent` :允许显式的 System.gc() 调用并发执行。
    - `-XX:+UseConcMarkSweepGC` :启用使用并发标记清除收集器(CMS)作为老年代的垃圾收集器。
    - `-XX:+UseParNewGC` :启用使用并行年轻代收集器(ParNew)作为年轻代的垃圾收集器。
    - `-XX:+CMSParallelRemarkEnabled` :启用 CMS 垃圾收集器的并行重标记阶段。
    - `-XX:+UseCMSCompactAtFullCollection` :在进行一次完整的 CMS 垃圾收集之后,启用进行内存碎片整理。
    - `-XX:LargePageSizeInBytes=128m` :设置大页面的大小为 128MB,用于提高内存分配的效率。
    - `-XX:+UseFastAccessorMethods` :使用快速访问方法来提高对象的访问性能。
    
    这些参数可以根据具体的应用程序和硬件环境进行调整和优化。请根据你的需求和环境进行合理的配置。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
  • 相关阅读:
    哈工大李治军老师操作系统笔记【8】:用户级线程(Learning OS Concepts By Coding Them !)
    详细介绍Linux环境的搭建以及相关问题出现的解决
    Spring事务与事务传播机制
    性能优化篇(四) GPU Instancing
    Jackson+Feign反序列化问题排查
    EGL函数翻译--eglGetDispaly
    m基于STBC的MIMO通信系统性能仿真和信道容量仿真
    Nginx安装
    计算机辅助数据绘图(matlab\python\js)
    vscode右键打开文件夹、文件等
  • 原文地址:https://blog.csdn.net/m0_37749659/article/details/133840250