mirror of
https://github.com/TeaOSLab/EdgeNode.git
synced 2025-11-03 06:40:25 +08:00
优化访问日志内存使用
This commit is contained in:
@@ -67,7 +67,8 @@ func (this *HTTPAccessLogQueue) Push(accessLog *pb.HTTPAccessLog) {
|
||||
|
||||
// 上传访问日志
|
||||
func (this *HTTPAccessLogQueue) loop() error {
|
||||
var accessLogs = []*pb.HTTPAccessLog{}
|
||||
const maxLen = 2000
|
||||
var accessLogs = make([]*pb.HTTPAccessLog, 0, maxLen)
|
||||
var count = 0
|
||||
|
||||
Loop:
|
||||
@@ -78,7 +79,7 @@ Loop:
|
||||
count++
|
||||
|
||||
// 每次只提交 N 条访问日志,防止网络拥堵
|
||||
if count > 2000 {
|
||||
if count >= maxLen {
|
||||
break Loop
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -178,3 +178,55 @@ func BenchmarkHTTPAccessLogQueue_ToValidUTF8String(b *testing.B) {
|
||||
_ = strings.ToValidUTF8(s, "")
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkAppendAccessLogs(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
|
||||
var stat1 = &runtime.MemStats{}
|
||||
runtime.ReadMemStats(stat1)
|
||||
|
||||
const count = 20000
|
||||
var a = make([]*pb.HTTPAccessLog, 0, count)
|
||||
for i := 0; i < b.N; i++ {
|
||||
a = append(a, &pb.HTTPAccessLog{
|
||||
RequestPath: "/hello/world",
|
||||
Host: "example.com",
|
||||
RequestBody: bytes.Repeat([]byte{'A'}, 1024),
|
||||
})
|
||||
if len(a) == count {
|
||||
a = make([]*pb.HTTPAccessLog, 0, count)
|
||||
}
|
||||
}
|
||||
|
||||
_ = len(a)
|
||||
|
||||
var stat2 = &runtime.MemStats{}
|
||||
runtime.ReadMemStats(stat2)
|
||||
b.Log((stat2.TotalAlloc-stat1.TotalAlloc)>>20, "MB")
|
||||
}
|
||||
|
||||
func BenchmarkAppendAccessLogs2(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
|
||||
var stat1 = &runtime.MemStats{}
|
||||
runtime.ReadMemStats(stat1)
|
||||
|
||||
const count = 20000
|
||||
var a = []*pb.HTTPAccessLog{}
|
||||
for i := 0; i < b.N; i++ {
|
||||
a = append(a, &pb.HTTPAccessLog{
|
||||
RequestPath: "/hello/world",
|
||||
Host: "example.com",
|
||||
RequestBody: bytes.Repeat([]byte{'A'}, 1024),
|
||||
})
|
||||
if len(a) == count {
|
||||
a = []*pb.HTTPAccessLog{}
|
||||
}
|
||||
}
|
||||
|
||||
_ = len(a)
|
||||
|
||||
var stat2 = &runtime.MemStats{}
|
||||
runtime.ReadMemStats(stat2)
|
||||
b.Log((stat2.TotalAlloc-stat1.TotalAlloc)>>20, "MB")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user