mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-15 09:10:25 +08:00
优化统计相关代码
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user