Junior
Dokąd się zwrócić, jeśli serwer działa wolno?
sobes.tech AI
Odpowiedź od AI
-
Monitorowanie systemu:
- Sprawdzić obciążenie CPU, użycie pamięci, wejście/wyjście dysku.
- Używać narzędzi takich jak Prometheus, Grafana,
top,htop.
-
Logi aplikacji:
- Przejrzeć logi pod kątem błędów, ostrzeżeń, śladów stosu.
- Zwrócić uwagę na długie zapytania, blokady.
-
Profilowanie kodu:
- Używać standardowego pakietu
pprofdo analizy wydajności. - Szukać "wąskich gardeł" - funkcji zużywających dużo CPU lub pamięci.
- Używać standardowego pakietu
// Przykład użycia pprof
import (
"log"
"net/http"
_ "net/http/pprof" // Rejestracja obsługi pprof
)
func main() {
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
// Główny kod aplikacji
}
- Wizualizować wyniki profilowania za pomocą Graphviz lub narzędzi
go tool pprof.
-
Połączenia z bazą danych:
- Sprawdzić wolne zapytania.
- Optymalizować zapytania SQL, dodawać indeksy.
- Upewnić się, że pula połączeń jest odpowiednia.
-
Sieć:
- Sprawdzić opóźnienia i utratę pakietów między klientem a serwerem, a także między komponentami systemu.
-
Usługi zewnętrzne:
- Jeśli aplikacja korzysta z API zewnętrznych, sprawdzić ich responsywność.
-
Konfiguracja:
- Sprawdzić ustawienia systemu operacyjnego, runtime Go (
GOMAXPROCS), serwera WWW (Nginx, Caddy).
- Sprawdzić ustawienia systemu operacyjnego, runtime Go (
-
Paralelizm i współbieżność:
- Analizować użycie gorutyn i kanałów, szukać deadlocków lub nadmiernego tworzenia gorutyn.
-
GC (garbage collector):
- Monitorować aktywność garbage collectora.
- Duża liczba alokacji lub długie pauzy GC mogą wskazywać na problemy z pamięcią.
-
Wdrażanie i infrastruktura:
- Sprawdzić stan hosta, kontenera, maszyny wirtualnej.
- Upewnić się, że zasoby są wystarczające.