一、Tomcat 多实例
1、概念:
Tomcat 多实例是指在同一台服务器上运行多个独立的 Tomcat 服务器实例。它们可以同时运行在同一台物理服务器或虚拟服务器上,但它们彼此之间是相互独立的,有各自的配置、应用程序和资源。
2、配置:
(1) 关闭 Tomcat:
bash /usr/local/tomcat/bin/shutdown.sh
在配置Tomcat之前关闭主站的主要原因是为了确保配置更改能够正确生效且不会引发问题。
(2) 准备多实例目录:
① 创建目录:
mkdir /usr/local/tomcat/instance{1..3}
② 将 /usr/local/tomcat/ 目录下的 conf、logs、temp 和 work 这四个子目录及其内容复制到实例目录中:
cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance1/
cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance2/
cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance3/
(3) 修改端口
Tomcat 多实例的配置中,修改端口是为了确保每个 Tomcat 实例在同一台服务器上运行时能够使用不同的网络端口,避免端口冲突,同时可以将这些不同的实例隔离开。
① 修改实例1的端口配置:
vim /usr/local/tomcat/instance1/conf/server.xml
● 修改服务端口:8080 → 8081
● 修改程序端口:8005 → 8091
● 修改网站目录:
appBase:定义了虚拟主机将从哪个目录加载部署的Web应用程序。
② 修改实例2的端口配置:
将实例1的web配置文件拷贝给实例2:
cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance2/conf/
● 修改服务端口:8081 → 8082
● 修改程序端口:8091 → 8092
示例2与示例3的网站主目录也是 /webapps
③ 修改示例3的端口配置:
将实例1的web配置文件拷贝给实例3:
cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance3/conf/
服务端口:8081 → 8083 ;程序端口:8091 → 8093
(4) 编写启动脚本:
① 编写实例1的脚本:
#!/bin/bash#instance1. /etc/init.d/functionsexport CATALINA_BASE="/usr/local/tomcat/instance1"case "$1" instart)$CATALINA_HOME/bin/startup.sh;;stop)$CATALINA_HOME/bin/shutdown.sh;;restart)$CATALINA_HOME/bin/shutdown.shsleep 5$CATALINA_HOME/bin/startup.sh;;esacexport JAVA_OPTS='-Xms64m -Xmx128m'
② 将实例1的启动脚本拷贝给实例2、3:
cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance2/ins2.sh
cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance3/ins3.sh
拷贝后记得修改对应的 CATALINA_BASE 路径:
③ 给脚本授权:
chmod +x /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance2/ins2.sh /usr/local/tomcat/instance3/ins3.sh
(5) 准备网站源码:
mkdir /webapps/
cp -r /usr/local/tomcat/webapps/ROOT/ /webapps/
(6) 启动脚本并测试:
/usr/local/tomcat/instance1/ins1.sh start
/usr/local/tomcat/instance2/ins2.sh start
/usr/local/tomcat/instance3/ins3.sh start
二、JVM 常用分析工具
1、jps
jps(Java Virtual Machine Process Status Tool)是Java开发工具包(JDK)提供的一个命令行工具,jps 通常用于查看和管理Java应用程序的运行时进程。
语法:
jps:列出正在运行的Java进程的PID和主类名。
jps -l:列出正在运行的Java进程的PID和完整的主类名(包括包路径)。
jps -m:除了PID和主类名外,还显示传递给main方法的参数。
jps -v:显示传递给java命令的所有JVM参数。
jps -q:只显示PID,不显示主类名或参数。
2、jinfo
jinfo 是Java Development Kit(JDK)提供的一个命令行工具,用于查看和修改正在运行的Java进程的Java虚拟机(JVM)配置参数。
3、jstack
jstack 是Java Development Kit(JDK)提供的一个命令行工具,用来观察 jvm 中当前所有线程的运行情况和线程当前状态。