
1 darylc 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 了解一下? |