日志优化
This commit is contained in:
parent
1191168a19
commit
dc2e1d8ea4
2
.gitignore
vendored
2
.gitignore
vendored
@ -13,3 +13,5 @@ src/server/unit_test.go
|
||||
src/server/teLog/*
|
||||
src/server/teLog/log.2024-11-28
|
||||
src/server/logs/ga_log/*.log
|
||||
src/server/goroutine.prof
|
||||
src/server/heap_after.pb.gz
|
||||
|
||||
@ -2,6 +2,7 @@ package game
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"runtime"
|
||||
kafkaMiddleware "server/middleware/kafka"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"sync"
|
||||
@ -15,8 +16,9 @@ const (
|
||||
)
|
||||
const (
|
||||
PLAYROOM_LOST = "playroom_lost"
|
||||
LOG_LENGTH = 10000
|
||||
WORKER_COUNT = 8
|
||||
// 增大缓冲:针对 ~1000 条/s,保留足够秒数的缓冲(可按需调整)
|
||||
LOG_LENGTH = 100000
|
||||
WORKER_COUNT = 16
|
||||
)
|
||||
|
||||
type LogMgr struct {
|
||||
@ -41,14 +43,17 @@ func (L *LogMgr) InitManager() {
|
||||
// 初始化通道与启动 worker 循环写入 kafka
|
||||
L.L = make(chan *Log, LOG_LENGTH)
|
||||
|
||||
// 启动 worker
|
||||
// 启动 worker(允许基于 CPU 动态扩展)
|
||||
workerCount := WORKER_COUNT
|
||||
if cpuWorkers := runtime.NumCPU() * 2; cpuWorkers > workerCount {
|
||||
workerCount = cpuWorkers
|
||||
}
|
||||
for i := 0; i < workerCount; i++ {
|
||||
L.wg.Add(1)
|
||||
go func() {
|
||||
defer L.wg.Done()
|
||||
for v := range L.L {
|
||||
// 如果 kafka 未就绪,尝试重入队列并等待一小段时间
|
||||
// 如果 kafka 未就绪,尝试重入队列并等待一小段时间(缩短等待)
|
||||
if kafkaMiddleware.KafkaMod == nil {
|
||||
// 尝试非阻塞重入,否则丢弃最旧再试一次
|
||||
select {
|
||||
@ -63,7 +68,7 @@ func (L *LogMgr) InitManager() {
|
||||
default:
|
||||
}
|
||||
}
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
continue
|
||||
}
|
||||
|
||||
@ -85,8 +90,8 @@ func (L *LogMgr) InitManager() {
|
||||
// 放不下则丢弃
|
||||
}
|
||||
}
|
||||
// 轻微退避,避免快速循环
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
// 缩短退避,避免快速循环阻塞
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user