怎样在运行中实时监控goroutine的个数?

2013-06-27 09:35:48 +08:00
 xiaojay
go新手,在用go写个server,基本方式就是客户过来一个连接,生成一个goroutine处理。
这样实时goroutine的个数,应该就等于并发数?
那么如何实时监控goroutine的个数?有什么好用的工具?

还是要自己维护一个 buffer chan,每次生成goroutine push个消息(chan <- 1),这个goroutine退出读一个消息(<- chan)

cc @cyfdecyf @clowwindy
2523 次点击
所在节点    Go 编程语言
7 条回复
bluntblade
2013-06-27 10:05:55 +08:00
查看runtime包。

func NumGoroutine

func NumGoroutine() int
NumGoroutine returns the number of goroutines that currently exist.
xiaojay
2013-06-27 11:56:47 +08:00
ok,搞定了,谢谢
顺便分享下demo,请指教 :)
https://gist.github.com/xiaojay/5873816
https://gist.github.com/xiaojay/5873821

ps:七牛的么,呵呵
dontwanttologin
2013-06-27 13:55:18 +08:00
@xiaojay 只有七牛的搞Go?
cyfdecyf
2013-06-28 10:12:57 +08:00
@bluntblade 长知识了。偷窥了下 id,发现你是昨天刚刚注册 v2ex 的。
xiaojay
2013-06-28 11:52:31 +08:00
@cyfdecyf
用cow,出现这个错误

是什么原因?
cyfdecyf
2013-06-30 20:17:06 +08:00
@xiaojay 目测你用的是 Mac 上的 Firefox 吧?同时创建的 socket 数量过多导致的,OS X 进程打开的文件数上限默认是 256,调大一些即可。

以后会考虑在遇到这个错误时关闭一些 keep alive 的 socket,本机使用的话应该可以解决一些问题。
bluntblade
2013-07-02 09:57:30 +08:00
我是七牛的运维主管。

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

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

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

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

© 2021 V2EX