golang 程序突然超时

2023-01-04 14:00:11 +08:00
 phpcyy
最近我们的程序老是有超时,每次都是一台机器突然耗时增加,重启这台机器上的服务后耗时也降不下来;
看了下代码最近提交很少也没几行,没看出什么问题;
这台机器调用别的所有服务的耗时都有升高,看了下 goroutine 的数量,没有上升;
之前加了 gc 的 PauseQuantiles 的耗时统计,发现 gc 耗时也上升很明显;
然后使用 pprof 抓了下 gc 的 trace ,出现了以下 2 张图上的情况,感觉 cpu 像是突然不工作了,什么情况会导致出现这个问题呢?




大佬们能给个思路吗?
2205 次点击
所在节点    Go 编程语言
14 条回复
horou
2023-01-04 15:02:19 +08:00
改用 Rust😒
lolizeppelin
2023-01-04 15:41:19 +08:00
是不是虚拟机 被 cgroup 限制了
先跑物理机不要用 docker 试试
GopherDaily
2023-01-04 15:41:39 +08:00
网络 /带宽?有机器的监控吗?
phpcyy
2023-01-04 15:43:22 +08:00
@lolizeppelin 腾讯云的云主机,没有用 docker
phpcyy
2023-01-04 15:49:49 +08:00
@GopherDaily

10:09:43 开始抓取的 trace ,这个是监控
tairan2006
2023-01-04 15:50:15 +08:00
如果感觉是环境的问题,就释放掉机器重新申请……
phpcyy
2023-01-04 15:50:55 +08:00
@phpcyy 监控截取的时间是 10 点到 10 点 20
phpcyy
2023-01-04 15:53:27 +08:00
@tairan2006 陆续 3 台机器出问题了,题目中没说清楚;每次现象是一致的,都是突然耗时增加后重启服务耗时也降不下来,其他机器都是正常的
GopherDaily
2023-01-04 16:04:33 +08:00
- 代码总是否有阻塞的锁之类?
- 服务资源是否有明显的波动,除了 CPU 以外还可以关注 磁盘和网络

大部分诊断都依赖于长期投入的监控建设
8355
2023-01-04 16:54:29 +08:00
按照描述建议使用最简单的方案代码回滚 如果能解决相当于已经定位问题了.
有 3 台机器出现问题我认为已经不是偶然了 95%以上是跟业务代码相关
datafeng
2023-01-04 17:20:14 +08:00
瞎猜应该是写的代码有问题
这是为换 rust 找个说服自己的理由么:)
lysS
2023-01-04 17:20:53 +08:00
大哥,给 cpu 的火焰图啊;你这个好难看啊
phpcyy
2023-01-04 18:17:21 +08:00
OK ,我明天先回滚代码放点量观察下,看能不能恢复吧
rekulas
2023-01-04 22:19:43 +08:00
高度怀疑某个逻辑处阻塞或死循环了,导致无法切换上下文

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/906504

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX