Sobes.tech
Junior

Para onde deve recorrer se o servidor estiver lento?

sobes.tech IA

Resposta da IA

  1. Monitorização do sistema:

    • Verificar a carga da CPU, uso de memória, entrada/saída do disco.
    • Utilizar ferramentas como Prometheus, Grafana, top, htop.
  2. Logs da aplicação:

    • Analisar os logs em busca de erros, avisos, rastros de pilha.
    • Prestar atenção a consultas longas, bloqueios.
  3. Perfil de código:

    • Usar o pacote padrão pprof para análise de desempenho.
    • Procurar "gargalos" - funções que consomem muita CPU ou memória.
// Exemplo de uso do pprof
import (
	"log"
	"net/http"
	_ "net/http/pprof" // Registro de manipuladores pprof
)

func main() {
	go func() {
		log.Println(http.ListenAndServe("localhost:6060", nil))
	}()
	// Seu código principal da aplicação
}
  • Visualizar os resultados do perfil com Graphviz ou ferramentas integradas go tool pprof.
  1. Conexões à base de dados:

    • Verificar consultas lentas.
    • Otimizar consultas SQL, adicionar índices.
    • Garantir a adequação do pool de conexões.
  2. Rede:

    • Verificar latências e perdas de pacotes entre cliente e servidor, bem como entre componentes do sistema (por exemplo, serviços, base de dados).
  3. Serviços externos:

    • Se a aplicação interagir com APIs externas, verificar sua capacidade de resposta.
  4. Configuração:

    • Verificar configurações do sistema operativo, runtime Go (por exemplo, GOMAXPROCS), servidor web (Nginx, Caddy).
  5. Paralelismo e concorrência:

    • Analisar o uso de goroutines e canais, procurar deadlocks ou criação excessiva de goroutines.
  6. GC (coletor de lixo):

    • Monitorar a atividade do coletor de lixo.
    • Grande quantidade de alocações ou pausas longas do GC podem indicar problemas de memória.
  7. Implantação e infraestrutura:

    • Verificar o estado do host, do container, da máquina virtual.
    • Garantir recursos suficientes.