服务列表带宽使用新的算法

This commit is contained in:
GoEdgeLab
2022-08-27 18:39:00 +08:00
parent d72f98c8b1
commit 43158faabb
6 changed files with 111 additions and 115 deletions

View File

@@ -782,7 +782,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
if err != nil {
return nil, err
}
result := []*pb.Server{}
var result = []*pb.Server{}
for _, server := range servers {
clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(tx, int64(server.ClusterId))
if err != nil {
@@ -790,9 +790,9 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
}
// 分组信息
pbGroups := []*pb.ServerGroup{}
var pbGroups = []*pb.ServerGroup{}
if models.IsNotNull(server.GroupIds) {
groupIds := []int64{}
var groupIds = []int64{}
err = json.Unmarshal(server.GroupIds, &groupIds)
if err != nil {
return nil, err
@@ -827,7 +827,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
}
// 审核结果
auditingResult := &pb.ServerNameAuditingResult{}
var auditingResult = &pb.ServerNameAuditingResult{}
if len(server.AuditingResult) > 0 {
err = json.Unmarshal(server.AuditingResult, auditingResult)
if err != nil {
@@ -847,27 +847,6 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
return nil, err
}
// 当前统计
dailyStat, err := models.SharedServerDailyStatDAO.SumCurrentDailyStat(tx, int64(server.Id))
if err != nil {
return nil, err
}
var pbDailyStat *pb.ServerDailyStat
if dailyStat != nil {
pbDailyStat = &pb.ServerDailyStat{
Bytes: int64(dailyStat.Bytes),
CachedBytes: int64(dailyStat.CachedBytes),
AttackBytes: int64(dailyStat.AttackBytes),
CountRequests: int64(dailyStat.CountRequests),
CountCachedRequests: int64(dailyStat.CountCachedRequests),
CountAttackRequests: int64(dailyStat.CountAttackRequests),
Day: dailyStat.Day,
Hour: dailyStat.Hour,
TimeFrom: dailyStat.TimeFrom,
TimeTo: dailyStat.TimeTo,
}
}
result = append(result, &pb.Server{
Id: int64(server.Id),
IsOn: server.IsOn,
@@ -895,9 +874,10 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
Id: int64(server.ClusterId),
Name: clusterName,
},
ServerGroups: pbGroups,
User: pbUser,
LatestServerDailyStat: pbDailyStat,
ServerGroups: pbGroups,
User: pbUser,
BandwidthTime: server.BandwidthTime,
BandwidthBytes: int64(server.BandwidthBytes),
})
}

View File

@@ -29,19 +29,36 @@ func init() {
goman.New(func() {
for range ticker.C {
func() {
var tx *dbs.Tx
serverBandwidthStatsLocker.Lock()
var m = serverBandwidthStatsMap
serverBandwidthStatsMap = map[string]*pb.ServerBandwidthStat{}
serverBandwidthStatsLocker.Unlock()
tx, err := models.SharedServerBandwidthStatDAO.Instance.Begin()
if err != nil {
remotelogs.Error("ServerBandwidthStatService", "begin transaction failed: "+err.Error())
return
}
defer func() {
_ = tx.Commit()
}()
for _, stat := range m {
err := models.SharedServerBandwidthStatDAO.UpdateServerBandwidth(tx, stat.UserId, stat.ServerId, stat.Day, stat.TimeAt, stat.Bytes)
if err != nil {
remotelogs.Error("ServerBandwidthStatService", "dump bandwidth stats failed: "+err.Error())
// 更新服务的带宽峰值
if stat.ServerId > 0 {
err := models.SharedServerBandwidthStatDAO.UpdateServerBandwidth(tx, stat.UserId, stat.ServerId, stat.Day, stat.TimeAt, stat.Bytes)
if err != nil {
remotelogs.Error("ServerBandwidthStatService", "dump bandwidth stats failed: "+err.Error())
}
err = models.SharedServerDAO.UpdateServerBandwidth(tx, stat.ServerId, stat.Day+stat.TimeAt, stat.Bytes)
if err != nil {
remotelogs.Error("ServerBandwidthStatService", "update server bandwidth failed: "+err.Error())
}
}
// 更新服务的带宽峰值
if stat.UserId > 0 {
err = models.SharedUserBandwidthStatDAO.UpdateUserBandwidth(tx, stat.UserId, stat.Day, stat.TimeAt, stat.Bytes)
if err != nil {

View File

@@ -424,10 +424,6 @@ func (this *ServerStatBoardService) ComposeServerStatBoard(ctx context.Context,
if err != nil {
return nil, err
}
if bytes == 0 {
// 尝试从缓存中读取
bytes = ServerBandwidthGetCacheBytes(req.ServerId, day, minute)
}
if bytes > 0 {
result.MinutelyPeekBandwidthBytes = bytes