Sobes.tech
Junior — Middle

Quais métodos podem ser usados para detectar e diagnosticar um problema de fuga de memória num microserviço?

sobes.tech IA

Resposta da IA

Para detetar e diagnosticar fugas de memória num microserviço em Go, pode usar os seguintes métodos:

  • Perfil de memória (pprof): o pacote incorporado net/http/pprof permite recolher e analisar perfis de memória para identificar objetos que não são libertados.

  • Ferramentas de monitorização: uso de sistemas de monitorização (Prometheus, Grafana) para acompanhar as métricas de consumo de memória ao longo do tempo.

  • Análise de dumps de memória (heap dump): criar dumps de memória e analisá-los com go tool pprof ou outras ferramentas externas.

  • Análise estática do código: procurar locais potenciais onde os objetos podem permanecer na memória devido a uma gestão incorreta das referências.

  • Testes de carga: executar o microserviço sob carga e observar o crescimento do consumo de memória.

Exemplo de ativação do pprof num microserviço:

import (
    "net/http"
    _ "net/http/pprof"
)

func main() {
    go func() {
        log.Println(http.ListenAndServe("localhost:6060", nil))
    }()
    // resto do código do serviço
}

Após iniciar, pode conectar-se a http://localhost:6060/debug/pprof/ para recolher perfis de memória para análise.