feat:gc task

#496
This commit is contained in:
samwaf
2025-10-24 17:01:24 +08:00
parent 1db3b47e76
commit e7e3ef4345
4 changed files with 49 additions and 0 deletions
+1
View File
@@ -19,4 +19,5 @@ const (
TASK_CLEAR_CC_WINDOWS = "task_clear_cc_windows" //清除ccWindows记录
TASK_CREATE_DB_INDEX = "task_create_db_index" //创建索引
TASK_CLEAR_WEBCACHE = "task_clear_webcache" //清除缓存
TASK_GC = "task_gc" //GC回收
)
+2
View File
@@ -331,6 +331,8 @@ func (m *wafSystenService) run() {
globalobj.GWAF_RUNTIME_OBJ_WAF_TaskRegistry.RegisterTask(enums.TASK_CLEAR_CC_WINDOWS, waftask.TaskCC)
globalobj.GWAF_RUNTIME_OBJ_WAF_TaskRegistry.RegisterTask(enums.TASK_CREATE_DB_INDEX, waftask.TaskCreateIndex)
globalobj.GWAF_RUNTIME_OBJ_WAF_TaskRegistry.RegisterTask(enums.TASK_CLEAR_WEBCACHE, waftask.TaskClearWebcache)
globalobj.GWAF_RUNTIME_OBJ_WAF_TaskRegistry.RegisterTask(enums.TASK_GC, waftask.TaskGC)
go waftask.TaskShareDbInfo()
globalobj.GWAF_RUNTIME_OBJ_WAF_TaskScheduler = waftask.NewTaskScheduler(globalobj.GWAF_RUNTIME_OBJ_WAF_TaskRegistry)
+7
View File
@@ -98,6 +98,13 @@ func InitTaskDb() []model.Task {
TaskMethod: enums.TASK_DELETE_HISTORY_INFO,
})
syncTaskToDb(model.Task{
TaskName: "每天01:00进行GC回收",
TaskUnit: enums.TASK_DAY,
TaskValue: 1,
TaskAt: "01:00",
TaskMethod: enums.TASK_GC,
})
syncTaskToDb(model.Task{
TaskName: "每天02:13进行SSL证书申请",
TaskUnit: enums.TASK_DAY,
+39
View File
@@ -0,0 +1,39 @@
package waftask
import (
"SamWaf/common/zlog"
"runtime"
)
func TaskGC() {
innerLogName := "TaskGC"
// 获取GC前的内存统计
var m1, m2 runtime.MemStats
runtime.ReadMemStats(&m1)
zlog.Info(innerLogName, "准备进行GC回收",
"GC前内存使用", m1.Alloc/1024/1024, "MB",
"GC前堆内存", m1.HeapAlloc/1024/1024, "MB",
"GC前系统内存", m1.Sys/1024/1024, "MB",
"GC次数", m1.NumGC)
// 执行GC
runtime.GC()
// 获取GC后的内存统计
runtime.ReadMemStats(&m2)
// 计算内存释放量
memFreed := int64(m1.Alloc) - int64(m2.Alloc)
heapFreed := int64(m1.HeapAlloc) - int64(m2.HeapAlloc)
zlog.Info(innerLogName, "GC回收完成",
"GC后内存使用", m2.Alloc/1024/1024, "MB",
"GC后堆内存", m2.HeapAlloc/1024/1024, "MB",
"GC后系统内存", m2.Sys/1024/1024, "MB",
"GC次数", m2.NumGC,
"释放内存", memFreed/1024/1024, "MB",
"释放堆内存", heapFreed/1024/1024, "MB",
"GC耗时", m2.PauseTotalNs-m1.PauseTotalNs, "ns")
}