Tomcat多实例部署及故障排查

1. 单台虚拟机部署3个tomcat多实例jpress-v3.0.6

1.1 解压tomcat包
[root@tomcat tomcat]# tar xf /app/tools/apache-tomcat-8.5.50.tar.gz 
1.2 复制3个tomcat实例
[root@tomcat tomcat]# cp -r apache-tomcat-8.5.50/ tomcat_8081
[root@tomcat tomcat]# cp -r apache-tomcat-8.5.50/ tomcat_8082
[root@tomcat tomcat]# cp -r apache-tomcat-8.5.50/ tomcat_8083
1.3 修改3个tomcat实例的端口,进行区分
[root@tomcat tomcat]# sed -i.bak 's#8080#8081#g' tomcat_8081/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8005#8006#g' tomcat_8081/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8009#8010#g' tomcat_8081/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8080#8082#g' tomcat_8082/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8005#8007#g' tomcat_8082/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8009#8011#g' tomcat_8082/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8080#8083#g' tomcat_8083/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8005#8008#g' tomcat_8083/conf/server.xml
[root@tomcat tomcat]# sed -i.bak 's#8009#8012#g' tomcat_8083/conf/server.xml
1.4 将3个tomcat实例包移动到/app下
[root@tomcat tomcat]# mv tomcat_808* /app/
1.5 启动3个tomcat实例
[root@tomcat tomcat]# /app/tomcat_8081/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat_8081
Using CATALINA_HOME:   /app/tomcat_8081
Using CATALINA_TMPDIR: /app/tomcat_8081/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       /app/tomcat_8081/bin/bootstrap.jar:/app/tomcat_8081/bin.jar
Tomcat started.
[root@tomcat tomcat]# /app/tomcat_8082/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat_8082
Using CATALINA_HOME:   /app/tomcat_8082
Using CATALINA_TMPDIR: /app/tomcat_8082/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       /app/tomcat_8082/bin/bootstrap.jar:/app/tomcat_8082/bin.jar
Tomcat started.
[root@tomcat tomcat]# /app/tomcat_8083/bin/startup.sh 
Using CATALINA_BASE:   /app/tomcat_8083
Using CATALINA_HOME:   /app/tomcat_8083
Using CATALINA_TMPDIR: /app/tomcat_8083/temp
Using JRE_HOME:        /app/jdk
Using CLASSPATH:       /app/tomcat_8083/bin/bootstrap.jar:/app/tomcat_8083/bin.jar
Tomcat started.
1.6 查看3个tomcat实例的端口
[root@tomcat webapps]# ss -lntup | grep java
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8007                 :::*                   users:(("java",pid=58100,fd=79))
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8008                 :::*                   users:(("java",pid=58157,fd=79))
tcp    LISTEN     0      100      :::8010                 :::*                   users:(("java",pid=58041,fd=58))
tcp    LISTEN     0      100      :::8011                 :::*                   users:(("java",pid=58100,fd=58))
tcp    LISTEN     0      100      :::8012                 :::*                   users:(("java",pid=58157,fd=58))
tcp    LISTEN     0      100      :::8081                 :::*                   users:(("java",pid=58041,fd=53))
tcp    LISTEN     0      100      :::8082                 :::*                   users:(("java",pid=58100,fd=53))
tcp    LISTEN     0      100      :::8083                 :::*                   users:(("java",pid=58157,fd=53))
tcp    LISTEN     0      1      ::ffff:127.0.0.1:8006                 :::*                   users:(("java",pid=58041,fd=79))
1.7 分别部署3个tomcat实例的jpress-v3.0.6

软件包存放路径为:/app/tomcat_8081/webapps/

1.8 远程数据库部署
# 创建3个数据库
mysql> create database jpress_8081;
mysql> create database jpress_8082;
mysql> create database jpress_8083;

# 创建用户jpress并授权
mysql> grant all on *.* to jpress@'%' identified by '123456';

2. 故障案例:tomcat负载高排查方法

2.1 找出问题进程
# 利用top命令找到CPU/MEM(根据实际需求选择)找到负载最高的进程,并记录PID号,如下例中则为58100
[root@tomcat ~]# top 
top - 19:50:00 up 16:26,  2 users,  load average: 0.02, 0.04, 0.05
Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2028116 total,    64292 free,  1338380 used,   625444 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   472492 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND      
 58100 root      20   0 3159080 354528  13684 S   0.3 17.5   0:22.81 java         
     1 root      20   0  125972   4468   2620 S   0.0  0.2   0:17.71 systemd      
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd     
     3 root      20   0       0      0      0 S   0.0  0.0   0:01.62 ksoftirqd/0  
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H 
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.29 migration/0  
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh       
     9 root      20   0       0      0      0 S   0.0  0.0   0:04.11 rcu_sched    
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain
2.2 通过进程PID找出是哪个java问题线程
# 利用top -Hp  PID 查找负载最高的线程,如下例中的58111
[root@tomcat ~]# top -Hp 58100
top - 19:53:13 up 16:29,  2 users,  load average: 0.00, 0.02, 0.05
Threads:  85 total,   0 running,  85 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  0.3 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  2028116 total,    73444 free,  1345008 used,   609664 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   466180 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                             
 58111 root      20   0 3159080 354588  13684 S  0.7 17.5   0:02.33 java                                
 58100 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 58101 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.55 java                                
 58102 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.25 java                                
 58103 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.23 java                                
 58104 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.62 java                                
 58105 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.01 java                                
 58106 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.01 java                                
 58107 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 58108 root      20   0 3159080 354588  13684 S  0.0 17.5   0:06.92 java                                
 58109 root      20   0 3159080 354588  13684 S  0.0 17.5   0:01.58 java                                
 58110 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 58112 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.20 java                                
 58113 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 58114 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.13 java                                
 58115 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.13 java                                
 58119 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.37 java                                
 58130 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.16 java                                
 58131 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.13 java                                
 58132 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.07 java                                
 58133 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.12 java                                
 58144 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.15 java                                
 58145 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.14 java                                
 58146 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 58147 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.13 java                                
 60193 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 60196 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 60198 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.00 java                                
 60201 root      20   0 3159080 354588  13684 S  0.0 17.5   0:00.02 java
2.3 将问题线程的pid号转换为16进制
[root@tomcat ~]# echo 'obase=16;58111' | bc
E2FF
2.4 利用jstack配合grep过滤出并显示问题进程的详细信息
# jstack 问题进程PID | grep -i 问题线程PID(16进制数)
[root@tomcat ~]# jstack 58100 | grep -i E2FF
"VM Periodic Task Thread" os_prio=0 tid=0x00007efc3c0c5800 nid=0xe2ff waiting on condition
说明:筛选出的信息可以提供开发人员查看排查问题
2.5 利用jmap显示对应PID的jvm内存使用情况
[root@tomcat ~]# jmap -heap 58100
Attaching to process ID 58100, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.241-b07

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 520093696 (496.0MB)
   NewSize                  = 11010048 (10.5MB)
   MaxNewSize               = 173015040 (165.0MB)
   OldSize                  = 22544384 (21.5MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 125304832 (119.5MB)
   used     = 61121864 (58.29035186767578MB)
   free     = 64182968 (61.20964813232422MB)
   48.77853712776216% used
From Space:
   capacity = 23068672 (22.0MB)
   used     = 10506912 (10.020172119140625MB)
   free     = 12561760 (11.979827880859375MB)
   45.54623690518466% used
To Space:
   capacity = 22544384 (21.5MB)
   used     = 0 (0.0MB)
   free     = 22544384 (21.5MB)
   0.0% used
PS Old Generation
   capacity = 35651584 (34.0MB)
   used     = 13678312 (13.044654846191406MB)
   free     = 21973272 (20.955345153808594MB)
   38.36663190056296% used

25267 interned Strings occupying 2605064 bytes.
2.6 导出jvm内存内容
[root@tomcat ~]# jmap -dump:format=b,file=/root/tomcat.bin 58100
Dumping heap to /root/tomcat.bin ...
File exists
[root@tomcat ~]# ll /root/tomcat.bin 
-rw------- 1 root root 69961630 Feb 10 17:48 /root/tomcat.bin
2.7 导出的文件可以用MemoryAnalyzer打开进行分析
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值