go 定時器 佔用cpu過高問題方案解決
阿新 • • 發佈:2021-01-16
go 定時器 佔用cpu過高問題 方案解決
一、cpu 佔用過高
示例:在做工業邊緣閘道器的時候 發現定時器 cpu佔cpu過高
如圖:
二、用go tool pprof 找到原因 定時器 佔用cpu過高(go tool pprof 為效能調優工具 ,這裡不做贅述)
三、解決方案
時間論解決
時間論 原理:
tw, err := timewheel.NewTimeWheel(1 * time. Second, 360)
if err != nil {
panic(err)
}
tw.Start()
tw.AddCron(1 * time.Second, func() {
fmt.Println("任務一00000")
})
tw.AddCron(2*time.Second, func() {
fmt.Println("任務二00000")
})
結束之後
cpu 提升 n倍