鹿形鱼dè小窝 - 踩坑
type: channel
link: https://blog.xingyu.lu/tag/%E8%B8%A9%E5%9D%91/
items: Golang for select 导致 CPU 100% 占用

Golang for select 导致 CPU 100% 占用
type: item
date: 2024-08-08T05:29:00+00:00
description: 解决方法检查 for select 代码中是否有 default 语句，并且在 default 分支上检查是否为空或者没有等待相关的逻辑，如果是的话则会导致 for 循环会在极短时间内不断地执行，导致CPU占用过高。示例for { select { case <-timer.C: fmt.Println("todo") default: // 注释default或者加上等待问题将会解决 // 如果没有相关等待，default分支逻辑将会在for循环一直执行 if someParam == someValue { // some logic } } }起因最近同事在使用开发的项目的时候，使用某个功能，打开docker stats查看占用发现在100%使用火焰图分析发现是 select 占比非常高，于是就查看相关代码以及搜集资料解决深入分析（待补充）