Sobes.tech
Junior

Куда треба да се обратите ако сервер ради споро?

sobes.tech АИ

Одговор од АИ

  1. Sistem nadgledanje:

    • Proveriti opterećenje CPU-a, korišćenje memorije, ulaz/izlaz diska.
    • Koristiti alate poput Prometheus, Grafana, top, htop.
  2. Logovi aplikacije:

    • Pregledati logove na greške, upozorenja, stogove.
    • Obratiti pažnju na duge upite, blokade.
  3. Profilisanje koda:

    • Koristiti standardni paket pprof za analizu performansi.
    • Tražiti "uska grla" - funkcije koje troše mnogo CPU ili memorije.
// Primer korišćenja pprof
import (
	"log"
	"net/http"
	_ "net/http/pprof" // Registracija pprof handlera
)

func main() {
	go func() {
		log.Println(http.ListenAndServe("localhost:6060", nil))
	}()
	// Glavni kod aplikacije
}
  • Vizualizovati rezultate profilisanja pomoću Graphviz ili ugrađenih alata go tool pprof.
  1. Veze sa bazom podataka:

    • Proveriti spore upite.
    • Optimizovati SQL upite, dodati indekse.
    • Uveriti se da je pool konekcija dovoljan.
  2. Mreža:

    • Proveriti latencije i gubitak paketa između klijenta i servera, kao i između komponenti sistema.
  3. Spoljni servisi:

    • Ako aplikacija komunicira sa eksternim API-jem, proveriti njihovu odzivnost.
  4. Konfiguracija:

    • Proveriti podešavanja operativnog sistema, runtime Go (GOMAXPROCS), web servera (Nginx, Caddy).
  5. Paralelizam i konkurentnost:

    • Analizirati korišćenje gorutina i kanala, tražiti deadlockove ili prekomerno kreiranje gorutina.
  6. GC (sakupljač smeća):

    • Pratiti aktivnost sakupljača smeća.
    • Veliki broj alokacija ili duge pauze GC mogu ukazivati na probleme sa memorijom.
  7. Deploy i infrastruktura:

    • Proveriti stanje hosta, kontejnera, virtuelne mašine.
    • Uveriti se da postoje dovoljni resursi.