Sobes.tech
Junior — Middle

Como determinar e avaliar a intensidade das solicitações que chegam ao servidor para garantir o seu funcionamento estável?

sobes.tech IA

Resposta da IA

Para determinar e avaliar a intensidade das solicitações no servidor em Go, podem ser utilizados vários métodos:

  1. Registo e análise

    • Ativar o registo de todas as solicitações recebidas com marca temporal.
    • Analisar os registos para contar o número de solicitações por unidade de tempo (por exemplo, solicitações por segundo).
  2. Métricas e monitorização

    • Utilizar bibliotecas para recolher métricas, por exemplo, o cliente Prometheus para Go.
    • Recolher métricas: número de solicitações, tempo de processamento, número de erros.
    • Configurar painéis e alertas para detetar anomalias.
  3. Perfilagem e testes de carga

    • Realizar testes de carga (por exemplo, com wrk ou hey) para compreender a capacidade máxima.
    • Utilizar o profiler integrado do Go (pprof) para analisar gargalos.

Exemplo de recolha de métricas com Prometheus:

import (
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
    "net/http"
)

var (
    requestCount = prometheus.NewCounterVec(
        prometheus.CounterOpts{
            Name: "http_requests_total",
            Help: "Número total de pedidos HTTP",
        },
        []string{"path"},
    )
)

func init() {
    prometheus.MustRegister(requestCount)
}

func handler(w http.ResponseWriter, r *http.Request) {
    requestCount.WithLabelValues(r.URL.Path).Inc()
    w.Write([]byte("Olá, mundo!"))
}

func main() {
    http.HandleFunc("/", handler)
    http.Handle("/metrics", promhttp.Handler())
    http.ListenAndServe(":8080", nil)
}

Assim, ao recolher e analisar métricas, é possível avaliar a intensidade das solicitações e tomar decisões para garantir a estabilidade do servidor.