Junior
Kur kreiptis, jei serveris veikia lėtai?
sobes.tech AI
Atsakymas iš AI
-
Sistemos stebėjimas:
- Patikrinkite CPU apkrovą, atminties naudojimą, disko įvestį/išvestį.
- Naudokite įrankius kaip Prometheus, Grafana,
top,htop.
-
Programos žurnalai:
- Išnagrinėkite žurnalus dėl klaidų, įspėjimų, steko išvadų.
- Atkreipkite dėmesį į ilgus užklausimus, blokus.
-
Kodo profilavimas:
- Naudokite standartinį
pprofpaketą našumo analizei. - Ieškokite "siaurų vietų" - funkcijų, kurios naudoja daug CPU ar atminties.
- Naudokite standartinį
// pprof naudojimo pavyzdys
import (
"log"
"net/http"
_ "net/http/pprof" // pprof apdorotojų registracija
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// Jūsų pagrindinis kodas
}
- Vizualizuokite profilavimo rezultatus naudodami
go tool pprofarba Graphviz.
-
Duomenų bazės ryšiai:
- Patikrinkite lėtus užklausimus į duomenų bazę.
- Optimizuokite SQL užklausas, pridėkite indeksus.
- Užtikrinkite ryšio baseino tinkamumą.
-
Tinklas:
- Patikrinkite delsą ir paketų praradimą tarp kliento ir serverio, taip pat tarp komponentų (pvz., paslaugų, duomenų bazės).
-
Trečiųjų šalių paslaugos:
- Jei programa sąveikauja su išoriniais API, patikrinkite jų atsako laiką.
-
Konfigūracija:
- Patikrinkite operacinės sistemos, Go runtime (pvz.,
GOMAXPROCS), web serverio (Nginx, Caddy) nustatymus.
- Patikrinkite operacinės sistemos, Go runtime (pvz.,
-
Paraleelizmas ir konkurencija:
- Analizuokite goručių ir kanalų naudojimą, ieškokite deadlock'ų ar perteklinio goručių kūrimo.
-
GC (atliekų surinkėjas):
- Stebėkite atliekų surinkėjo aktyvumą.
- Daug alokacijų ar ilgų pauzių gali rodyti atminties problemas.
-
Diegimas ir infrastruktūra:
- Patikrinkite hosto, konteinerio, virtualios mašinos būklę.
- Užtikrinkite pakankamų išteklių buvimą.