记一次Go程序CPU占用100%的问题

本文记录了一次Go服务CPU占用100%的问题排查过程,通过使用pprof性能分析工具发现是由于for select语句的default分支导致CPU空转。解决方法是移除default,使select能够阻塞等待IO事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我写的一个服务,有段时间CPU占用一直是100%。因为一直在开发环境,还没上线,今天终于有时间了就排查了一下。100%这种占用,一看就感觉是某个for循环导致的。

首先,选择分析工具,Golang的性能分析工具pprof。

在Gin这个框架中,需要通过注册才可以使用。
方式

if ok, _ := strconv.ParseBool(utils.GetEnv("DEVELOP_MODE")); ok {
   
		pprof.Register(router)
}

我们用了一个环境变量DEVELOP_MODE来控制,这样子方便控制是否打开调试,因为这个东西一旦开启会对性能有影响。

如果不是用的gin框架,那么直接导入包import _ "net/http/pprof" 就会打开调试,为啥呢?因为pprof/pprof.go文件是这么写的࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值