Sobes.tech
Middle+

Kaip atliksite serverio problemų sprendimo procedūrą esant dideliam apkrovimui? Kokius rodiklius analizuosite ir kokius įrankius naudosite?

sobes.tech AI

Atsakymas iš AI

Pradėsiu nuo sisteminių metrikų analizės, siekiant nustatyti aukšto apkrovimo priežastis.

Pagrindiniai rodikliai analizei:

  • load average: vidutinis procesų skaičius, laukiančių vykdymo. Aukšta reikšmė rodo CPU perkrovą arba įvesties-išvesties operacijų laukimą.
  • CPU utilization: procesoriaus laiko procentinė dalis. Padeda suprasti, kuri CPU dalis yra užimta naudotojų procesais, sisteminiais iškvietimais arba yra laisva.
  • Memory utilization: operatyviosios atminties naudojimas. Aukštas naudojimas gali sukelti aktyvų swap'ą, kuris žymiai sumažina našumą.
  • Disk I/O: skaitymo/rašymo intensyvumas diskuose. Aukšta veikla gali būti kliūtis.
  • Network activity: išeinantis ir įeinantis srautas, tinklo jungčių skaičius. Aukšta apkrova gali būti susijusi su tinklo problemomis arba DoS atakomis.
  • Process list: vykdomų procesų sąrašas, jų išteklių naudojimas, būklė. Padeda nustatyti konkretų procesą, kuris sukelia apkrovą.

Diagnostikos įrankiai:

  • top / htop: interaktyvus sisteminių išteklių ir procesų stebėjimas realiu laiku. Leidžia rūšiuoti procesus pagal CPU, atminties naudojimą ir kt.

    # top -c // pilnas komandų eilutės rodymas
    
  • vmstat: virtualios atminties, procesų, CPU ir įvesties-išvesties aktyvumo ataskaita.

    # vmstat 1 // kas sekundę
    
  • iostat: disko įrenginių veiklos ir našumo stebėjimas.

    # iostat -xz 1 // išplėstas išvestis kas sekundę
    
  • netstat / ss: informacija apie tinklo ryšius, maršrutus, tinklo sąsajas.

    # netstat -tunapl // TCP/UDP ryšiai, LISTEN lizdai, prievadai, PID
    # ss -tunapl
    
  • sar: sisteminės veiklos surinkimas, ataskaitos ir analizė (CPU, atmintis, diskas, tinklas). Dažnai naudojamas istorinei našumo analizei.

    # sar -u 5 5 // CPU kas 5 sekundes, 5 kartus
    # sar -d 5 5 // diskas kas 5 sekundes, 5 kartus
    # sar -n DEV 5 5 // tinklas kas 5 sekundes, 5 kartus
    
  • iftop / nethogs: interaktyvus tinklo srauto stebėjimas pagal sąsajas ar procesus.

    # iftop -i eth0 // stebėti eth0 sąsają
    # nethogs eth0 // stebėti srautą pagal procesus eth0
    
  • dstat: universalus įrankis, jungiantis vmstat, iostat, netstat galimybes.

    # dstat -c -m -d -n // CPU, atmintis, diskas, tinklas
    
  • strace / lsof: sisteminių iškvietimų sekimas (strace) ir atvirų failų sąrašas (lsof) konkrečiam procesui. Naudinga giliau analizei.

    # strace -p <PID> // proceso sekimas pagal PID
    # lsof -p <PID> // atviri failai pagal PID
    

Procesas bus kartojamas: identifikuosiu siaurą vietą pagal metrikas, naudosiu tinkamą įrankį detaliam analizei, analizuosiu priežastį (pvz., konkretų procesą), imsiu korekcines priemones (pvz., perkrauti ar optimizuoti programą, padidinti išteklius). Taip pat svarbu patikrinti programų ir sistemų žurnalus (journalctl, /var/log/*).