From 517df2d7a70efdbf0f15e63c138938efc87a14d5 Mon Sep 17 00:00:00 2001 From: huangfeng Date: Wed, 21 Aug 2024 09:28:13 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=BF=90=E7=BB=B4?= =?UTF-8?q?=E5=BF=83=E8=B7=B3=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MntnController.java | 10 +++++-- .../timeTask/AlertTask.java | 6 ---- .../timeTask/ClearCacheTask.java | 19 ++++++++++++- .../timeTask/MntnCheckTask.java | 28 ++++++++----------- 4 files changed, 37 insertions(+), 26 deletions(-) diff --git a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/MntnController.java b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/MntnController.java index 6c97b5e..d5f2351 100644 --- a/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/MntnController.java +++ b/xymanager_admin/src/main/java/com/shxy/xymanager_admin/controller/MntnController.java @@ -8,6 +8,7 @@ import com.shxy.xymanager_common.util.DingTalkPushUtil; import com.shxy.xymanager_common.util.HttpRequestUtil; import com.shxy.xymanager_common.util.JSONUtil; import com.shxy.xymanager_common.util.StringUtils; +import com.shxy.xymanager_framework.timeTask.ClearCacheTask; import com.shxy.xymanager_service.service.MntnService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -45,9 +46,12 @@ public class MntnController extends BaseController { resp.setHeader("ResSyncTime", String.valueOf(System.currentTimeMillis())); return result; } catch (Exception ex) { - log.error("上传心跳异常", ex); - String str = ex.getMessage() + ", ip=" + ip + ", url=" + url + ", " + data; - DingTalkPushUtil.pushText("运维心跳", str); + if (!ClearCacheTask.heartbeatMap.containsKey(ip)) { + ClearCacheTask.heartbeatMap.put(ip, 1L); + log.error("上传心跳异常", ex); + String str = ex.getMessage() + ", ip=" + ip + ", url=" + url + ", " + data; + DingTalkPushUtil.pushText("运维心跳", str); + } HashMap result = new HashMap<>(); result.put("code", "400"); result.put("msg", ex.getMessage()); diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/AlertTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/AlertTask.java index 0db2037..cedf001 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/AlertTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/AlertTask.java @@ -1,7 +1,6 @@ package com.shxy.xymanager_framework.timeTask; import com.shxy.xymanager_common.util.DingTalkPushUtil; -import com.shxy.xymanager_common.zhiping.PulliceModel; import com.shxy.xymanager_framework.socket.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; @@ -25,11 +24,6 @@ public class AlertTask { shutdown = 1; } - @Scheduled(cron = "0 0 9 * * ?") - private void clear() { - PulliceModel.fubinDoneMap.clear(); - } - @Scheduled(initialDelay = 60000, fixedDelay = 2000) private void sendYWMsg() { if (shutdown == 0 && DingTalkPushUtil.alertYW.size() > 0) { diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java index 57aee86..3b971ba 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/ClearCacheTask.java @@ -1,19 +1,36 @@ package com.shxy.xymanager_framework.timeTask; +import com.shxy.xymanager_common.zhiping.PulliceModel; import com.shxy.xymanager_service.service.NewCacheService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.HashMap; @Service public class ClearCacheTask { + public static HashMap warnMap = new HashMap<>(); + public static HashMap heartbeatMap = new HashMap<>(); + @Resource NewCacheService newCacheService; @Scheduled(cron = "0 0 3 * * ?") - private void clear() { + private void clearOneDayStat() { newCacheService.clearOneDayStat(); } + + @Scheduled(cron = "0 0 9,13 * * MON-FRI") + private void clearWarnMap() { + warnMap.clear(); + heartbeatMap.clear(); + } + + @Scheduled(cron = "0 0 9 * * ?") + private void clearFubin() { + PulliceModel.fubinDoneMap.clear(); + } + } diff --git a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java index 1787164..3ce7c03 100644 --- a/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java +++ b/xymanager_framework/src/main/java/com/shxy/xymanager_framework/timeTask/MntnCheckTask.java @@ -28,8 +28,8 @@ public class MntnCheckTask { private int maxCount = 50; private int maxDay = 3; private int lostPer = 10; - private HashMap warnMap = new HashMap<>(); - private HashMap lostMap = new HashMap<>(); + public HashMap lostingMap = new HashMap<>(); + private HashMap _lostMap; @Value("${maintain.check}") private boolean needCheck; @@ -50,16 +50,11 @@ public class MntnCheckTask { shutdown = 1; } - @Scheduled(cron = "0 0 9,13 * * MON-FRI") - private void clear() { - warnMap.clear(); - } - @Scheduled(initialDelay = 60000, fixedDelay = 60 * 5 * 1000) private void checkAll() { if (needCheck) { try { - lostMap.clear(); + _lostMap = new HashMap<>(); log.info("MntnCheckTask.checkAll 开始."); Map terminalMap = newCacheService.getTerminalMap(); Iterator it = terminalMap.keySet().iterator(); @@ -72,7 +67,7 @@ public class MntnCheckTask { for (MntnActivities activity : activityList) { int lostCount = 0; for (Terminals term : activity.getTerms()) { - if (lostMap.containsKey(term.getId())) { + if (_lostMap.containsKey(term.getId())) { lostCount++; } } @@ -84,6 +79,7 @@ public class MntnCheckTask { this.sendWarningLost(activity, lostCount); } } + lostingMap = _lostMap; log.info("MntnCheckTask.checkAll 结束."); } catch (Exception e) { log.error("MntnCheckTask.checkAll error.", e); @@ -116,7 +112,7 @@ public class MntnCheckTask { Long lasttime = list.get(0).getCreateTime(); long days = (System.currentTimeMillis() / 1000 - lasttime) / 60 / 60 / 24; if (days >= maxDay) { - lostMap.put(termId, days); + _lostMap.put(termId, days); } } } @@ -127,12 +123,12 @@ public class MntnCheckTask { String str = "装置" + term.getCmdid() + "最近" + minutes + "分钟内,运维报送次数:" + count + "次, 超过设定的阈值" + maxCount + "次;"; - if (warnMap.containsKey(term.getId())) { - Long cnt = warnMap.get(term.getId()); + if (ClearCacheTask.warnMap.containsKey(term.getId())) { + Long cnt = ClearCacheTask.warnMap.get(term.getId()); cnt++; - warnMap.put(term.getId(), cnt); + ClearCacheTask.warnMap.put(term.getId(), cnt); } else { - warnMap.put(term.getId(), 1L); + ClearCacheTask.warnMap.put(term.getId(), 1L); log.warn(str); DingTalkPushUtil.alertYW.add(str); } @@ -143,8 +139,8 @@ public class MntnCheckTask { + lostCount + "台,超过设定的阈值" + lostPer + "%;"; int id = activity.getId() - 100000; - if (!warnMap.containsKey(id)) { - warnMap.put(id, 1L); + if (!ClearCacheTask.warnMap.containsKey(id)) { + ClearCacheTask.warnMap.put(id, 1L); log.warn(str); DingTalkPushUtil.alertYW.add(str); }