Skip to content

Commit fcb7f2b

Browse files
committed
Update.
1 parent 8ceb472 commit fcb7f2b

File tree

3 files changed

+26
-17
lines changed

3 files changed

+26
-17
lines changed

resource/template/theme-default/home.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -869,10 +869,10 @@
869869
if (!window.serverTrafficData) {
870870
return;
871871
}
872-
872+
873873
let hasUpdates = false;
874874
const trafficData = window.serverTrafficData;
875-
875+
876876
this.servers.forEach(server => {
877877
const trafficInfo = trafficData[server.ID];
878878
if (trafficInfo) {
@@ -883,18 +883,18 @@
883883
percent: trafficInfo.percent,
884884
lastUpdate: trafficInfo.lastUpdate
885885
};
886-
887-
// 检查是否有实际更新
888-
if (!oldTraffic ||
886+
887+
// 检查是否有实际更新,增加更详细的比较
888+
if (!oldTraffic ||
889889
oldTraffic.used !== newTraffic.used ||
890890
oldTraffic.total !== newTraffic.total ||
891-
oldTraffic.percent !== newTraffic.percent) {
891+
Math.abs(oldTraffic.percent - newTraffic.percent) > 0.01) { // 百分比变化超过0.01%才更新
892892
server.traffic = newTraffic;
893893
hasUpdates = true;
894894
}
895895
}
896896
});
897-
897+
898898
if (hasUpdates) {
899899
this.$forceUpdate();
900900
}

service/rpc/server.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -671,20 +671,22 @@ func (s *ServerHandler) updateTrafficIncremental(server *model.Server, state *mo
671671
// 处理入站流量
672672
if originalNetInTransfer < prevIn {
673673
// 检测到流量回退
674-
if float64(prevIn-originalNetInTransfer)/float64(prevIn+1) < 0.1 {
674+
backwardAmount := prevIn - originalNetInTransfer
675+
backwardPercent := float64(backwardAmount) / float64(prevIn+1)
676+
677+
if backwardPercent < 0.05 { // 从10%降低到5%,减少误判
675678
// 小幅度回退,可能是统计误差,不计入增量
676679
increaseIn = 0
677680
} else {
678681
// 大幅度回退,可能是重启,重置基准点
679682
server.PrevTransferInSnapshot = int64(originalNetInTransfer)
680-
// 重要:不计算负增量
681683
increaseIn = 0
682684
}
683685
} else {
684686
// 正常增量
685687
increaseIn = originalNetInTransfer - prevIn
686-
// 检查增量是否合理(防止异常大值)
687-
if increaseIn > 1000*1024*1024*1024 { // 增量超过1TB,可能是异常值
688+
// 检查增量是否合理(防止异常大值)- 调整阈值为10TB,更适合高流量服务器
689+
if increaseIn > 10*1024*1024*1024*1024 { // 增量超过10TB,可能是异常值
688690
log.Printf("警告:服务器 %d 入站流量增量异常大 (%d),可能是统计错误,本次不计入", server.ID, increaseIn)
689691
increaseIn = 0
690692
} else if server.CumulativeNetInTransfer > 0 &&
@@ -701,20 +703,22 @@ func (s *ServerHandler) updateTrafficIncremental(server *model.Server, state *mo
701703
// 处理出站流量
702704
if originalNetOutTransfer < prevOut {
703705
// 检测到流量回退
704-
if float64(prevOut-originalNetOutTransfer)/float64(prevOut+1) < 0.1 {
706+
backwardAmount := prevOut - originalNetOutTransfer
707+
backwardPercent := float64(backwardAmount) / float64(prevOut+1)
708+
709+
if backwardPercent < 0.05 { // 从10%降低到5%,减少误判
705710
// 小幅度回退,可能是统计误差,不计入增量
706711
increaseOut = 0
707712
} else {
708713
// 大幅度回退,可能是重启,重置基准点
709714
server.PrevTransferOutSnapshot = int64(originalNetOutTransfer)
710-
// 重要:不计算负增量
711715
increaseOut = 0
712716
}
713717
} else {
714718
// 正常增量
715719
increaseOut = originalNetOutTransfer - prevOut
716-
// 检查增量是否合理(防止异常大值)
717-
if increaseOut > 1000*1024*1024*1024 { // 增量超过1TB,可能是异常值
720+
// 检查增量是否合理(防止异常大值)- 调整阈值为10TB,更适合高流量服务器
721+
if increaseOut > 10*1024*1024*1024*1024 { // 增量超过10TB,可能是异常值
718722
log.Printf("警告:服务器 %d 出站流量增量异常大 (%d),可能是统计错误,本次不计入", server.ID, increaseOut)
719723
increaseOut = 0
720724
} else if server.CumulativeNetOutTransfer > 0 &&
@@ -732,7 +736,7 @@ func (s *ServerHandler) updateTrafficIncremental(server *model.Server, state *mo
732736
state.NetInTransfer = server.CumulativeNetInTransfer
733737
state.NetOutTransfer = server.CumulativeNetOutTransfer
734738

735-
// 仅在异常大流量增量时记录日志,减少日志输出
739+
// 仅在异常大流量增量时记录警告日志
736740
if increaseIn > 100*1024*1024*1024 || increaseOut > 100*1024*1024*1024 {
737741
log.Printf("注意:服务器 %d 流量增量较大 (入站=%d, 出站=%d)", server.ID, increaseIn, increaseOut)
738742
}

service/singleton/alertsentinel.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,14 +366,19 @@ func UpdateTrafficStats(serverID uint64, inTransfer, outTransfer uint64) {
366366
var serverName string
367367
if server := ServerList[serverID]; server != nil {
368368
serverName = server.Name
369+
// 确保服务器状态中的流量数据是最新的,不依赖报警规则
370+
if server.State != nil {
371+
server.State.NetInTransfer = inTransfer
372+
server.State.NetOutTransfer = outTransfer
373+
}
369374
}
370375
ServerLock.RUnlock()
371376

372377
// 使用轻量级的锁定以提高效率
373378
AlertsLock.RLock()
374379
defer AlertsLock.RUnlock()
375380

376-
// 没有报警规则时,不需要更新
381+
// 即使没有报警规则,也要确保前端显示正确,但可以跳过报警相关的更新
377382
if len(Alerts) == 0 || AlertsCycleTransferStatsStore == nil {
378383
return
379384
}

0 commit comments

Comments
 (0)