V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
xiaojay
V2EX  ›  Go 编程语言

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

  •  
  •   xiaojay ·
    xiaojay · 2013-06-27 09:35:48 +08:00 · 2538 次点击
    这是一个创建于 4176 天前的主题,其中的信息可能已经有所发展或是发生改变。
    go新手,在用go写个server,基本方式就是客户过来一个连接,生成一个goroutine处理。
    这样实时goroutine的个数,应该就等于并发数?
    那么如何实时监控goroutine的个数?有什么好用的工具?

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

    cc @cyfdecyf @clowwindy
    7 条回复    1970-01-01 08:00:00 +08:00
    bluntblade
        1
    bluntblade  
       2013-06-27 10:05:55 +08:00   ❤️ 1
    查看runtime包。

    func NumGoroutine

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

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

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

    以后会考虑在遇到这个错误时关闭一些 keep alive 的 socket,本机使用的话应该可以解决一些问题。
    bluntblade
        7
    bluntblade  
       2013-07-02 09:57:30 +08:00
    我是七牛的运维主管。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6168 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:43 · PVG 10:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.