Sobes.tech
Middle+

Jak przeprowadzisz procedurę rozwiązywania problemów na serwerze w przypadku jego dużego obciążenia? Jakie wskaźniki będziesz analizować i z jakich narzędzi korzystać?

sobes.tech AI

Odpowiedź od AI

Rozpocznę od analizy metryk systemowych, aby zidentyfikować przyczyny wysokiego obciążenia.

Główne wskaźniki do analizy:

  • load average: średnia liczba procesów oczekujących na wykonanie. Wysoka wartość wskazuje na przeciążenie CPU lub oczekiwanie na wejście/wyjście.
  • CPU utilization: procent wykorzystania czasu CPU. Pozwala zrozumieć, jaka część CPU jest zajęta przez procesy użytkownika, wywołania systemowe lub jest bezczynna.
  • Memory utilization: użycie pamięci RAM. Wysokie zużycie może prowadzić do aktywnego swapowania, co znacznie obniża wydajność.
  • Disk I/O: intensywność operacji odczytu/zapisu na dyskach. Wysoka aktywność może być wąskim gardłem.
  • Network activity: ruch wychodzący i przychodzący, liczba połączeń sieciowych. Wysokie obciążenie może być spowodowane problemami sieciowymi lub atakiem DoS.
  • Process list: lista uruchomionych procesów, ich zużycie zasobów, stan. Pomaga zidentyfikować konkretny proces generujący obciążenie.

Narzędzia diagnostyczne:

  • top / htop: Interaktywny monitoring zasobów systemowych i procesów w czasie rzeczywistym. Pozwala sortować procesy według zużycia CPU, pamięci itp.

    # top -c // wyświetlenie pełnej linii poleceń
    
  • vmstat: raport o pamięci wirtualnej, procesach, CPU i aktywności wejścia/wyjścia.

    # vmstat 1 // wyjście co sekundę
    
  • iostat: monitorowanie aktywności i wydajności urządzeń dyskowych.

    # iostat -xz 1 // rozszerzone wyjście dla dysku i CPU, co sekundę
    
  • netstat / ss: informacje o połączeniach sieciowych, trasach, statystykach interfejsów.

    # netstat -tunapl // połączenia TCP/UDP, gniazda nasłuchujące, porty, PID
    # ss -tunapl
    
  • sar: zbieranie, raportowanie i analiza aktywności systemu (CPU, pamięć, dysk, sieć). Używane do analizy wydajności historycznej.

    # sar -u 5 5 // CPU co 5 sekund, 5 razy
    # sar -d 5 5 // Dysk co 5 sekund, 5 razy
    # sar -n DEV 5 5 // Sieć co 5 sekund, 5 razy
    
  • iftop / nethogs: interaktywny monitoring ruchu sieciowego po interfejsach lub procesach.

    # iftop -i eth0 // monitoring interfejsu eth0
    # nethogs eth0 // monitoring ruchu po procesach na eth0
    
  • dstat: uniwersalne narzędzie łączące możliwości vmstat, iostat, netstat.

    # dstat -c -m -d -n // CPU, pamięć, dysk, sieć
    
  • strace / lsof: śledzenie wywołań systemowych (strace) i lista otwartych plików (lsof) dla konkretnego procesu. Przydatne do głębokiej analizy zachowania aplikacji.

    # strace -p <PID> // śledzenie procesu po PID
    # lsof -p <PID> // otwarte pliki procesu po PID
    

Procedura będzie iteracyjna: identyfikuję wąskie gardło na podstawie metryk, używam odpowiedniego narzędzia do szczegółowej analizy, analizuję przyczynę (np. konkretny proces), i podejmuję działania korygujące (np. restart lub optymalizacja aplikacji, zwiększenie zasobów). Ważne jest również sprawdzanie logów aplikacji i logów systemowych (journalctl, /var/log/*).