思考(七十七):一个 goroutine 的性能问题

在压力测试中,7万玩家在线不操作导致每台测试机CPU占用20%,主要由协程调度引起。通过排查发现,每个玩家会触发秒级定时器,造成大量协程上下文切换,导致CPU消耗。测试证实,协程切换次数与CPU占用比例相符,证实了问题原因。结论是,尽管Go支持高并发,但无故的协程定时器会带来不必要的CPU消耗,需要进行优化,例如使用进程级单个定时器配合优先队列来提高效率。
摘要由CSDN通过智能技术生成

问题

在压力测试中,今天遇到一个问题:

7w 玩家在线不做任何操作, 5 台测试机,每台 CPU 均占用 20% 的消耗

在这里插入图片描述

其中,主要进程消耗占用:
在这里插入图片描述
每台机器空跑,占用了 20% CPU ,有点浪费

问题排查(一)

使用 go tool pprof http://haidao-03:20101/debug/pprof/profile 命令, top50 下:
在这里插入图片描述
可以看到最耗时的是 runtime.schedule ,其次是 runtime.futex

有了初步的印象,再具体看下性能消耗调用链。执行 go tool pprof --pdf http://haidao-03:20101/debug/pprof/profile > gateway.pdf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值