1.背景
2021元旦期间,线上144、145两台服务器CPU使用率过高,收到了告警消息
故障报警
告警主机 :172.17.3.144
主机 I P : 172.17.3.144
当前状态 : PROBLEM
问题详情 : Available Cpu on 172.17.3.144 less than 10%
当前值 : 0.07 %
告警时间 : 2021.01.05 10:18:10
当前时间 : 2021.01.05 10:19:20
查询Grafana平台上的CPU使用状态:
占用cpu高线程:
线程jstack代码:
2.排查
下面展示一些 内联代码片
。
public static List<BaseInfoVo> getLackOfData(String beginMonth, String endMonth, List<Object> list, String comparedMonthString) {
//获取前端要展示的所有月份
List<String> monthList = new ArrayList<>();
monthList.add(endMonth);
boolean flag = true;
while (flag) {
Collections.sort(monthList);
//获取前一月的时间
String beforeMonth = DateUtils.getBeforeOneMonth(DateUtils.dayParse(monthList.get(0)));
if (beginMonth.equals(beforeMonth)) {
monthList.add(beforeMonth);
flag = false;
} else {
monthList.add(beforeMonth);
}
}
当beginMonth= endMonth时,会导致死循环