1
susecjh 2018-05-19 08:09:19 +08:00 via Android
log
|
2
wqlin OP @susecjh #1 怎么打 log,现在我只用 runtime.NumGoroutine() 打印出活跃的 goroutine 数量。从日志可以看到本来只有几百个的,然后不知道怎么的突然开始增大,一直增加到 8192 个。可以打印出更详细的信息吗
|
3
janxin 2018-05-19 08:17:29 +08:00 via iPad
先看是不是自己创建的,自己创建的打 log 就能解决
|
4
janxin 2018-05-19 08:25:33 +08:00 via iPad
还有一种方法是 dump goroutine stacktrace,具体方法网上搜一下就好了
|
6
EchoUtopia 2018-05-19 08:37:09 +08:00 via Android
goroutine 泄露
|
7
gamexg 2018-05-19 09:34:25 +08:00 via Android
http pprof ?
看看新创建的都在执行什么操作。 |
8
wspsxing 2018-05-19 10:24:59 +08:00 via Android
协程泄露吼啊
|
9
mengzhuo 2018-05-19 10:42:24 +08:00
运行中的 goroutine 在你 dump 的时候会有显示 "running" 的,不过你这个应该是没退出导致的泄漏
|
10
rcmerci 2018-05-19 13:20:00 +08:00
一般一下从几百个变到几千个,很有可能都是同一处 go func(){}产生出来的,然后泄露了把。dump 出来 goroutine stacktrace,然后看看是不是有大量相似的 goroutine,很有可能就找到原因了
|
13
zwh2698 2018-05-19 14:01:55 +08:00 via Android
该死的不死,新增的还在继续
|
14
fuxiaohei 2018-05-19 17:34:47 +08:00
一般开启 http/pprof 来看一下 goroutine 页面的打印,最多的 goroutine 都停在哪个位置就可以了
|
15
bigpigeon 2018-05-20 00:48:36 +08:00
runtime 包有个 NumGoroutine 可以获取当前 ctrip 的数量
|
16
bigpigeon 2018-05-20 00:57:53 +08:00
v2ex 写错了不能修改真的难受
|
17
hyuwang 2018-05-20 11:43:39 +08:00
grmon 了解一下?
|