unpackWARs 自动解压
autoDeploy 自动部署
修改同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
Context作用:
路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
应用独立配置,例如单独配置应用日志、单独配置应用访问控制
配置在
说明:
path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先级更高
docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。
<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>
" 代表双引号
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
垃圾回收
指定
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
修改tomcat并发连接
默认200
添加:
root@ubuntu20:/usr/local/tomcat/conf# vi server.xml
maxThreads=“2000”
克隆代码
git clone https://gitee.com/JPressProjects/jpress.git
编译
/apps/jpress# mvn clean install package -Dmaven.test.skip=true
在Maven中,clean
和install
是两个常用的构建生命周期阶段。下面是它们的含义:
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
拷贝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` :使用快速访问方法来提高对象的访问性能。
这些参数可以根据具体的应用程序和硬件环境进行调整和优化。请根据你的需求和环境进行合理的配置。