生产环境中遇到的偶发问题如何定位?

来源:1-4 Go 程序是怎么跑起来的

Jceee2号机

2021-05-25 16:32:21

现象:服务正常接口的执行时间是5ms内,偶尔出现一些执行超3秒的请求(重试是5ms内)。

下游timeout是3秒,直接504了,也看不出实际用了几秒。

出现概率:0.008% 超时:5100/64800000

  1. mysql连接池配置:
    sqlDB.SetMaxIdleConns(100)
    sqlDB.SetMaxOpenConns(100)
    sqlDB.SetConnMaxLifetime(time.Hour) 
  1. cpu/内存/负载 正常

  2. 数据库慢无查询,负载正常

问题一般如何定位?用什么工具定位

  1. mysql连接池问题?

  2. goroutine的调度有关?qps250左右,应该还不到go的单机瓶径

  3. 网络波动?

写回答

1回答

Xargin

2021-05-25

这种偶发问题感觉像是网络问题,生产环境有没有 tcp retrans 的监控呢?


之前 grab 的一个兄弟是用持续地抓包来排查的,他们碰到的丢包导致 tcp 队头阻塞,进一步导致的偶发延迟问题。


如果是偶发的 CPU/内存/goroutine 飚升,那是另外一套定位方法

0
hceee2号机
hp>谢谢老师~我往这方面看看

h021-05-26
共1条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程