【问题标题】:Websockets running in background of go program causing 100% CPU usage在 Go 程序后台运行的 Websocket 导致 100% 的 CPU 使用率
【发布时间】:2018-03-05 07:08:45
【问题描述】:

我在我的 go 程序中实现了 Web 套接字,以便在其他进程发生时定期在后台更新三个变量。自从这样做后,程序几乎立即开始占用 100% 的 CPU 使用率,我不确定为什么。

这里是有问题的代码:

streamOneHandler := func(event *websockets.Event) {
    varOne, err = strconv.ParseFloat(event.Number, 64)
}

streamTwoHandler := func(event *websockets.Event) {
    varTwo, err = strconv.ParseFloat(event.Number, 64)
}

streamThreeHandler := func(event *websockets.Event) {
    varThree, err = strconv.ParseFloat(event.Number, 64)
}

errHandler := func(err error) {
    fmt.Println(err)
}


streamOne, err = websockets.WsEventServe("string1", streamOneHandler, errHandler )

    if err != nil {
        log.Fatal(err)
    }

streamTwo, err = websockets.WsEventServe("string2", streamTwoHandler, errHandler )

    if err != nil {
        log.Fatal(err)

streamThree, err = websockets.WsEventServe("string3", streamThreeHandler, errHandler )

    if err != nil {
        log.Fatal(err)
    }


go func() {
    <- streamOne
    <- streamTwo
    <- streamThree
}()

任何帮助找出导致 CPU 使用率大幅飙升的原因将不胜感激。

【问题讨论】:

标签: go websocket gorilla


【解决方案1】:

当你在一个 goroutine 中有一个无限循环旋转时,就会发生这种情况。很难看到您发布的代码子集在哪里发生。但这就是原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2012-11-24
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多