Sobes.tech
Junior — Middle

Hogyan határozhatjuk meg egy goroutine aktuális méretét vagy terhelését Go-ban?

sobes.tech MI

Válasz az MI-től

Go-ban nehéz közvetlenül meghatározni egy adott goroutine pontos méretét vagy terhelését, mivel a goroutine-ok könnyűsúlyúak és a runtime kezeli őket.

Azonban, lehet:

  • A runtime csomagot használni az általános információk megszerzéséhez a goroutine-ok állapotáról (például, a runtime.NumGoroutine() visszaadja az aktív goroutine-ok számát).
  • Profilozni az alkalmazást a pprof segítségével, hogy lássuk a CPU és memória használatát, valamint a goroutine-ok közötti eloszlást.

Példa a goroutine-ok számának lekérésére:

package main

import (
    "fmt"
    "runtime"
    "time"
)

func worker() {
    time.Sleep(2 * time.Second)
}

func main() {
    for i := 0; i < 5; i++ {
        go worker()
    }
    fmt.Println("Aktív goroutine-ok:", runtime.NumGoroutine())
    time.Sleep(3 * time.Second)
}

A goroutine-ok terhelésének részletesebb elemzéséhez profilozás és nyomon követés használható.