Java线上问题排查攻略 - cpu使用、内存占用、网络、数据库连接等问题排查

线上的问题在通常有一些预警,比如CPU被打满,网络达到顶峰等等问题。或者用户的反馈,比如某某页面打不开,系统加载很慢,一直提示报错等等。

应急操作:

1 记录问题发生的情况

包括服务器的情况,Java虚拟机的一些情况,数据库的连接情况等等。

2 尽快让用户正常使用系统

常用的方法就是系统降级:

  • 让出问题的服务先停掉。
  • 代码回滚:往往问题都是在代码更新后出现的。
  • 重启大法,要尽快的保证用户能正常使用。

线上问题异常及可能的原因

1 应用层面

应用层面的排查主要是CPU、load、内存以及网络

1.1 CPU

如果发现CPU占用率很高,这个时候就要考虑CPU跑满的原因:

1、FULL GC 频繁

2、有非常耗CPU的操作

 

通过一些命令将CPU占用最高的几个线程查看出来.

(1)通过ps -ef | grep java 或者 jps 找到pid

[root@iZj6ch2a1k9ok9a599lk5bZ ~]# ps -ef | grep java
root      307137       1  2 12:56 ?        00:03:59 java -jar -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=128m -Dspring.profiles.active=prod /usr/local/fastcms/cms-1.0-SNAPSHOT.jar
root      312259  312064  0 15:11 pts/0    00:00:00 grep --color=auto java
[root@iZj6ch2a1k9ok9a599lk5bZ ~]# jps
312260 Jps
307137 cms-1.0-SNAPSHOT.jar

(2)top -Hp pid 找到使用CPU最高的线程

上面已经得到了pid是307137

[root@iZj6ch2a1k9ok9a599lk5bZ ~]# top -Hp 307137
top - 15:13:47 up 13 days, 16 min,  7 users,  load average: 2.56, 2.45, 2.44
Threads:  42 total,   0 running,  42 sleeping,   0 stopped,   0 zombie
%Cpu(s): 11.0 us,  3.8 sy,  0.0 ni, 54.3 id, 29.4 wa,  0.7 hi,  0.8 si,  0.0 st
MiB Mem :   3591.0 total,    105.8 free,   2280.0 used,   1205.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    352.5 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                                          
 308128 root      20   0 3009752 986008      0 S   0.3  26.8   0:07.98 http-nio-8085-e                                                                                                                                                  
 308132 root      20   0 3009752 986008      0 S   0.3  26.8   0:08.14 http-nio-8085-e                                                                                                                                                  
 307137 root      20   0 3009752 986008      0 S   0.0  26.8   0:00.01 java                                                                                                                                                             
 307138 root      20   0 3009752 986008      0 S   0.0  26.8   0:08.56 java                                                                                                                                                             
 307139 root      20   0 3009752 986008      0 S   0.0  26.8   0:00.91 GC Thread#0                                                                                                                                                      
 307140 root      20   0 3009752 986008      0 S   0.0  26.8   0:00.00 G1 Main Marker                                                                                                                                                   
 307141 root      20   0 3009752 986008      0 S   0.0  26.8   0:00.23 G1 Conc#0                                                                                                                                                        
 307142 root      20   0 3009752 986008      0 S   0.0  26.8   0:00.08 G1 Refine#0                                                                                                                                                      
 307143 root      20   0 300975
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值