现象
今天, 生产上的springboot 应用cpu 达到200%, 即占用了2核, 线上应用奔溃, 应用无法访问。在立刻重启应用后,应用恢复正常, 奇怪的是, 在一段时间后, 服务又出现无法访问的情况。
问题分析
该问题可以大致上看成2类, 可能也可能没有直接关联
服务宕机
应用占用CPU很高
排查思路及手段
因为不同的问题排查思路及方式会不同, 针对本次服务宕机的排查问题追溯如下:
通过jps查看应用是否运行 > 通过Top查看系统运行状况 > 查看错误日志 >
排查细节:
1、 使用jps查看是哪个进程编号pid 对应哪个应用
jps: Java Virtual Machine Process Status Tool
[root@localhost ~]# jps
26610 Bootstrap
28877 jar
18039 TSDMain
26091 Kafka
19456 Jps
如果发现应用不在列表中, 则本次服务无法访问则是因为应用未启动造成, 则需要排查是什么原因造成服务未启动。
可能原因:
linux oom killer 将应用杀死
人为杀死(可能性很小)
操作系统宕机等原因(如果操作系统在云服务上,可能性极小)
此时, 我发现应用还在列表中。
2. 查看错误日志
java 应用在线上会以文件的形式记录warn级别及以上的错误日志, 发现有大量以下内容的错误日