优化统计相关代码

This commit is contained in:
刘祥超
2023-04-19 22:15:57 +08:00
parent fc401a1426
commit accd0236ea

View File

@@ -54,6 +54,9 @@ type HTTPRequestStatManager struct {
totalAttackRequests int64 totalAttackRequests int64
locker sync.Mutex locker sync.Mutex
monitorTicker *time.Ticker
uploadTicker *time.Ticker
} }
// NewHTTPRequestStatManager 获取新对象 // NewHTTPRequestStatManager 获取新对象
@@ -77,12 +80,12 @@ func NewHTTPRequestStatManager() *HTTPRequestStatManager {
// Start 启动 // Start 启动
func (this *HTTPRequestStatManager) Start() { func (this *HTTPRequestStatManager) Start() {
// 上传请求总数 // 上传请求总数
var monitorTicker = time.NewTicker(1 * time.Minute) this.monitorTicker = time.NewTicker(1 * time.Minute)
events.OnKey(events.EventQuit, this, func() { events.OnKey(events.EventQuit, this, func() {
monitorTicker.Stop() this.monitorTicker.Stop()
}) })
goman.New(func() { goman.New(func() {
for range monitorTicker.C { for range this.monitorTicker.C {
if this.totalAttackRequests > 0 { if this.totalAttackRequests > 0 {
monitor.SharedValueQueue.Add(nodeconfigs.NodeValueItemAttackRequests, maps.Map{"total": this.totalAttackRequests}) monitor.SharedValueQueue.Add(nodeconfigs.NodeValueItemAttackRequests, maps.Map{"total": this.totalAttackRequests})
this.totalAttackRequests = 0 this.totalAttackRequests = 0
@@ -90,19 +93,19 @@ func (this *HTTPRequestStatManager) Start() {
} }
}) })
var uploadTicker = time.NewTicker(30 * time.Minute) this.uploadTicker = time.NewTicker(30 * time.Minute)
if Tea.IsTesting() { if Tea.IsTesting() {
uploadTicker = time.NewTicker(10 * time.Second) // 在测试环境下缩短Ticker时间以方便我们调试 this.uploadTicker = time.NewTicker(10 * time.Second) // 在测试环境下缩短Ticker时间以方便我们调试
} }
remotelogs.Println("HTTP_REQUEST_STAT_MANAGER", "start ...") remotelogs.Println("HTTP_REQUEST_STAT_MANAGER", "start ...")
events.OnKey(events.EventQuit, this, func() { events.OnKey(events.EventQuit, this, func() {
remotelogs.Println("HTTP_REQUEST_STAT_MANAGER", "quit") remotelogs.Println("HTTP_REQUEST_STAT_MANAGER", "quit")
uploadTicker.Stop() this.uploadTicker.Stop()
}) })
// 上传Ticker // 上传Ticker
goman.New(func() { goman.New(func() {
for range uploadTicker.C { for range this.uploadTicker.C {
var tr = trackers.Begin("UPLOAD_REQUEST_STATS") var tr = trackers.Begin("UPLOAD_REQUEST_STATS")
err := this.Upload() err := this.Upload()
tr.End() tr.End()
@@ -378,7 +381,7 @@ func (this *HTTPRequestStatManager) Upload() error {
sort.Slice(pbCities, func(i, j int) bool { sort.Slice(pbCities, func(i, j int) bool {
return pbCities[i].CountRequests > pbCities[j].CountRequests return pbCities[i].CountRequests > pbCities[j].CountRequests
}) })
var serverCountMap = map[int64]int16{} var serverCountMap = map[int64]int16{} // serverId => count
for _, city := range pbCities { for _, city := range pbCities {
serverCountMap[city.ServerId]++ serverCountMap[city.ServerId]++
if serverCountMap[city.ServerId] > maxCities { if serverCountMap[city.ServerId] > maxCities {