随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

国标GB28181协议国标平台EasyGBS视频平台告警功能占用数据库内存过多的优化方案

之前在《EasyGBS实现告警功能快照》一文中,讲了EasyGBS的告警功能已经成功开发,可以设定报警画面,以及对画面进行快照拍摄记录。

然而,在服务器长时间不断累积报警信息之后,报警信息就会越积越多,此时不单单是告警快照图片过多,而是数据库存的告警记录也会一直累积,服务器和数据库的性能必然会受到影响。

因此我们需要对报警信息的累积存储进行优化,设置告警快照和告警记录的存储时间,然后在程序中设置定时检查间隔。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
            1、获取配置文件告警保留时间
            2、设置定时检测任务删除超过时间的快照文件和数据库告警记录
        */
        for _, v := range devoceFiles {
            alarmPath := filepath.Join(alarmSnapDir, v.Name())
            alarmFiles, err := ioutil.ReadDir(alarmPath)
            if err != nil {
                return err
            }
            for _, k := range alarmFiles {
                alarmJpgPath := filepath.Join(alarmPath, k.Name())
                nameSplitArr := strings.Split(k.Name(), ".")
                if len(nameSplitArr) == 2 {
                    //晒出后缀时间
                    if len(nameSplitArr[0]) > 20 {
                        timeStr := nameSplitArr[0][len(nameSplitArr[0])-14:]
                        if t, err := time.ParseInLocation("20060102150405", timeStr, time.Local); err == nil {
                            if thisTime.After(t.Add(time.Duration(d) * time.Hour * 24)) {
                                if err := os.RemoveAll(alarmJpgPath); err != nil {
                                    log.Println(err)
                                } else {
                                    utils.Logf("定时清空告警快照失败 %v ,%v", alarmJpgPath, d)
                                }
                            }
                        }
  
                    }
  
                }
  
            }

  

设置过后会按照设置的间隔,检查本地的快照目录文件夹和数据库的告警记录,然后将超过保留时间的记录和快照信息删除,达到减少资源占用的目的。

posted on   EasyGBS  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示