Junior
Kam sa obrátiť, ak server pracuje pomaly?
sobes.tech AI
Odpoveď od AI
-
Systémové sledovanie:
- Skontrolujte zaťaženie CPU, využitie pamäte, vstup/výstup disku.
- Používajte nástroje ako Prometheus, Grafana,
top,htop.
-
Logy aplikácie:
- Prezrite si logy na chyby, varovania, zásobníky.
- Dávajte pozor na dlhé dotazy, zámky.
-
Profilovanie kódu:
- Použite štandardný balík
pprofna analýzu výkonu. - Hľadajte "úzke miesta" - funkcie, ktoré spotrebúvajú veľa CPU alebo pamäte.
- Použite štandardný balík
// Príklad použitia pprof
import (
"log"
"net/http"
_ "net/http/pprof" // Registrácia handlerov pprof
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// Hlavný kód aplikácie
}
- Vizualizujte výsledky profilovania pomocou Graphviz alebo vstavaných nástrojov
go tool pprof.
-
Pripojenia k databáze:
- Skontrolujte pomalé dotazy.
- Optimalizujte SQL dotazy, pridajte indexy.
- Uistite sa, že pool pripojení je dostatočný.
-
Sieť:
- Skontrolujte latencie a stratu paketov medzi klientom a serverom, ako aj medzi systémovými komponentmi.
-
Externé služby:
- Ak aplikácia komunikuje s externými API, skontrolujte ich odozvu.
-
Konfigurácia:
- Skontrolujte nastavenia operačného systému, runtime Go (
GOMAXPROCS), webového servera (Nginx, Caddy).
- Skontrolujte nastavenia operačného systému, runtime Go (
-
Paralelizmus a konkurentnosť:
- Analyzujte použitie goroutine a kanálov, hľadajte deadlocky alebo nadmerné vytváranie goroutine.
-
GC (zberač odpadu):
- Sledujte aktivitu zberača odpadu.
- Veľký počet alokácií alebo dlhé pauzy GC môžu naznačovať problémy s pamäťou.
-
Nasadenie a infraštruktúra:
- Skontrolujte stav hostiteľa, kontajnera, virtuálneho stroja.
- Uistite sa, že sú dostupné dostatočné zdroje.