|
Komanda vmstat yra labiausiai paplitęs Linux/Unix stebėjimo įrankis, rodantis serverio būsenos reikšmes tam tikru laiko intervalu, įskaitant serverioProcesoriaus naudojimas, atminties naudojimas, virtualios atminties keitimas, IO skaitymas ir rašymas. Ši komanda yra mano mėgstamiausia komanda patikrinti Linux/Unix, viena yra ta, kad palaikomas Linux/Unix, o kita yra ta, kad, palyginti su viršumi, galiu matyti viso įrenginio procesoriaus, atminties ir IO naudojimą, o ne tik kiekvieno proceso procesoriaus ir atminties naudojimą (skirtingi naudojimo scenarijai). Paprastai vmstat įrankis naudojamas naudojant du skaitinius parametrus: pirmasis parametras yra imtų laiko intervalų skaičius, vienetas yra sekundės, o antrasis parametras yra mėginių skaičius, pvz.:
root@ubuntu:~# VMSTAT 2 1 procs -----------atmintis---------- ---swap-- -----io---- -sistema-- ----procesorius---- r b swpd nemokama buff talpykla si so bi bo in cs us sy id wa 1 0 0 3498472 315836 3819540 0 0 0 1 2 0 0 0 100 0 2 reiškia, kad serverio būsena renkama kartą per dvi sekundes, o 1 reiškia, kad serverio būsena renkama tik vieną kartą. Tiesą sakant, paraiškos teikimo proceso metu tam tikrą laiką stebėsime, o jei nenorime to stebėti, galime tiesiog tiesiogiai nutraukti vmstat, pavyzdžiui:
root@ubuntu:~# VMSTAT 2 procs -----------atmintis---------- ---swap-- -----io---- -sistema-- ----procesorius---- r b swpd nemokama buff talpykla si so bi bo in cs us sy id wa 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
Tai reiškia, kad vmstat renka duomenis kas 2 sekundes ir tęsiasi tol, kol baigiu programą, o aš baigiu programą surinkęs duomenis 5 kartus čia. Gerai, komanda pristatoma, dabar pradėkime aiškinti kiekvieno parametro reikšmę. rTai reiškia, kad reikia paleisti eilę (tai yra, kiek procesų iš tikrųjų priskirta procesoriui), mano išbandytas serveris šiuo metu yra gana neveikiantis, neveikia programos, kai ši vertė viršija procesorių skaičių, atsiras procesoriaus kliūtis. Tai taip pat susiję su viršutinės dalies apkrova, paprastai apkrova yra didesnė, jei ji viršija 3, ji yra didesnė, jei viršija 5, o jei viršija 10, tai nėra normalu, o serverio būklė yra labai pavojinga. Viršutinės dalies apkrova yra panaši į eilės per sekundę apkrovą. Jei veikianti eilė yra per didelė, tai reiškia, kad jūsų procesorius yra užimtas, o tai paprastai sukelia didelį procesoriaus naudojimą. bTai reiškia, kad užblokuotas procesas, tai nėra daug ką pasakyti, procesas užblokuotas, visi supranta. swpdJei naudojamos virtualios atminties dydis yra didesnis nei 0, tai reiškia, kad jūsų įrenginyje nepakanka fizinės atminties, o jei tai nėra programos atminties nutekėjimo priežastis, laikas atnaujinti atmintį arba perkelti atminties reikalaujančias užduotis į kitą kompiuterį. nemokamai Laisvos fizinės atminties dydis, mano mašinos atmintis iš viso yra 8G, o likę 3415M. buff Linux/Unix sistema naudojama saugoti, koks turinys kataloge, leidimai ir kt. talpykloje, aš tikriausiai užimu daugiau nei 300M šioje mašinoje talpyklatalpykla yra tiesiogiai naudojama prisiminti failus, kuriuos atidarome, buferio failus, aš užimu daugiau nei 300M savo kompiuteryje (čia yra protingas dalykas Linux / Unix, imtis dalies laisvos fizinės atminties talpyklos failus ir katalogus, siekiant pagerinti programos vykdymo našumą, kai programa naudoja atmintį, buferis / talpykla bus naudojama greitai.) ) si Jei ši reikšmė didesnė nei 0, tai reiškia, kad fizinės atminties nepakanka arba atmintis nutekėjo. Mano mašina turi daug atminties ir viskas gerai. Taigi Disko dydis, įrašytas į virtualią atmintį per sekundę, jei ši vertė yra didesnė nei 0, toks pat kaip aukščiau. bi Blokų įrangaPer sekundę gautų blokų skaičius, čia blokinis įrenginys nurodo visus sistemos diskus ir kitus blokinius įrenginius, numatytasis bloko dydis yra 1024 baitai, aš neturiu jokios IO operacijos mašinoje, todėl visada buvo 0, bet mačiau tai mašinose, kurios tvarko didelius duomenų kiekius (2-3T), gali siekti 140000/s, o disko įrašymo greitis yra beveik 140M per sekundę boBlokavimo įrenginio per sekundę siunčiamų blokų skaičius, pavyzdžiui, kai skaitome failą, bo yra didesnis nei 0. bi ir bo paprastai yra arti 0, kitaip IO yra per dažnas ir jį reikia koreguoti. ĮProcesoriaus pertraukimų skaičius per sekundę, įskaitant laiko pertraukas csKonteksto perjungimų skaičius per sekundę, pavyzdžiui, kai iškviečiame sistemos funkciją, turime perjungti kontekstus ir gijų perjungimąProceso kontekstasPavyzdžiui, žiniatinklio serveriuose, tokiuose kaip "Apache" ir "nginx", paprastai atliekame našumo testus su tūkstančiais ar net dešimtimis tūkstančių lygiagrečių, o žiniatinklio serverio pasirinkimo procesą galima sumažinti proceso ar gijos piku, testavimu nepalankiausiomis sąlygomis, kol cs iki palyginti mažos vertės, procesų ir gijų skaičius yra tinkamesnė vertė. Sistemos iškvietimai taip pat yra tokie patys, kiekvieną kartą, kai iškviečiama sistemos funkcija, mūsų kodas pateks į branduolio erdvę, todėl kontekstas perjungiamas, o tai reikalauja daug išteklių, todėl turėtume stengtis vengti dažnų sistemos funkcijų iškvietimų. Per daug konteksto jungiklių reiškia, kad didžioji dalis procesoriaus eikvojama konteksto perjungimui, todėl procesorius turi mažiau laiko rimtiems dalykams atlikti, o procesorius nėra visiškai išnaudojamas, o tai nepatartina. mumsnaudotojasProcesoriaus laikasKartą pamačiau, kad JAV buvo arti 100, o r bėgimo eilė pasiekė 80 serveryje, kuris labai dažnai šifravo ir iššifravo (mašina buvo išbandyta nepalankiausiomis sąlygomis, o našumas nebuvo geras). syJei sistemos procesoriaus laikas yra per didelis, tai reiškia, kad sistemos skambučiai yra ilgi, pvz., dažnos IO operacijos. Id Tuščiosios eigos procesoriaus laikas, paprastai tariant, id + us + sy = 100, paprastai manau, kad id yra tuščiosios eigos procesoriaus naudojimas, us yra vartotojo procesoriaus naudojimas, sy yra sistemos procesoriaus naudojimas. svorisPalaukite IO procesoriaus laiko.
|