linux - test

Kako da jednostavno testirate svoj Linux sistem

28 септембра, 2020

Ako vaš svakodnevni posao podrazumeva rad u Linux-u, onda je dobro da znate na koji način možete da testirate svoj sistem i proverite da li ima nekih slabih tačaka.

U slučaju da se pitate zašto biste uopšte radili tako nešto, važno je znati na koji način će se ponašati vaš sistem pod velikim opterećenjem, kada je istovremeno aktivan veliki broj procesa, kada postoji veliki mrežni saobraćaj, veliko opterećenje memorije i kada je sistem generalno preopterećen. Takva vrsta testa može da vam pomogne da budete sigurni da će vaš sistem biti stabilan kada se nađe u produkciji.

Takođe, ako je potrebno predvideti ponašanje neke nove aplikacije koja treba da bude puštena u produkciju, dobro je unapred znati kako će se ona ponašati u ekstremnim uslovima u produkciji.

Srećom, postoji način da se i bez nekih posebnih alata to testira i u okviru samog Linux sistema, pomoću komandi koje ćemo vam u ovom tekstu predstaviti.

Petlje

Za početak možete probati sa petljama. Pokrenite neku petlju iz komandne linije i gledajte kako se sistem ponaša. Pošto će petlja u značajnoj meri opteretiti CPU, videćete kako se on ponaša i kako to utiče na sistem u celosti. Rezultate lako možete pogledati koristeći komandu uptime.

U komandi ispod smo pokrenuli četiti beskonačne petlje. Možete povećati broj petlji dodavanjem brojeva ili korišćenjem bash izraza npr {1…6} na mesto “1,2,3,4“

for i in 1 2 3 4; do while : ; do : ; done & done

Kada ovu komandu unesete u konzolu, pokrenuće se četiri beskonačne petlje u pozadini.

$ for i in 1 2 3 4; do while : ; do : ; done & done
[1] 205012
[2] 205013
[3] 205014
[4] 205015

U ovom slučaju su pokrenute četiti komande, sa prikazanim brojevima i ID-jevima procesa koji su pokrenuti.

Da biste videli rezultate, koristite komandu prikazanu u liniji ispod. U ovom konkretnom slučaju komanda uptime će biti pokrenuta svakih 30 sekundi.

$ while true; do uptime; sleep 30; done

Ako nameravate da pokrenete ovaj test periodično, možete staviti loop komandu u skript.

#!/bin/bash

while true
do
  uptime
  sleep 30
done

Na izlazu ćete videti kako se opeterećenje postepeno povećava, a zatim sa završetkom petlje isto tako smanjuje.

 11:25:34 up 5 days, 17:27,  2 users,  load average: 0.15, 0.14, 0.08
 11:26:04 up 5 days, 17:27,  2 users,  load average: 0.09, 0.12, 0.08
 11:26:34 up 5 days, 17:28,  2 users,  load average: 1.42, 0.43, 0.18
 11:27:04 up 5 days, 17:28,  2 users,  load average: 2.50, 0.79, 0.31
 11:27:34 up 5 days, 17:29,  2 users,  load average: 3.09, 1.10, 0.43
 11:28:04 up 5 days, 17:29,  2 users,  load average: 3.45, 1.38, 0.54
 11:28:34 up 5 days, 17:30,  2 users,  load average: 3.67, 1.63, 0.66
 11:29:04 up 5 days, 17:30,  2 users,  load average: 3.80, 1.86, 0.76
 11:29:34 up 5 days, 17:31,  2 users,  load average: 3.88, 2.06, 0.87
 11:30:04 up 5 days, 17:31,  2 users,  load average: 3.93, 2.25, 0.97
 11:30:34 up 5 days, 17:32,  2 users,  load average: 3.64, 2.35, 1.04 <== loops
 11:31:04 up 5 days, 17:32,  2 users,  load average: 2.20, 2.13, 1.01     stopped
 11:31:34 up 5 days, 17:33,  2 users,  load average: 1.40, 1.94, 0.98

Da biste prekinuli izvršavanje petlje unesite komandu kill kako je prikazano na primeru ispod (pod pretpostavkom da su i vaši džobovi obeleženi kao 1,2,3 i 4.

$ kill %1 %2 %3 %4

 

Specijalizovani alati za testiranje sistema

Drugi način da testirate kako vaš sistem reaguje na opterećenje jeste da koristite neke od specijalizovanih alata za tu namenu. Jedan od njih se zove Stress i može da optereti sistema na više načina. U principu ovaj alat opterećuje vaš CPU, memoriju i disk, testirajući na taj način kako se praktično ceo sistem ponaša pod opterećenjem.

Sa –cpu opcijom, stress komanda koristi funkciju kvadratnog korena da bi naterala CPU da se opetereti do maksimuma.

Takođe, watch-it skripta (watch-it-2) može biti korišćena da utiče na memoriju sistema. Obratite pažnju da se kod nje koristi free komanda da biste videli efekte stres testa.

$ cat watch-it-2
#!/bin/bash

while true
do
  free
  sleep 30
done

Pokretanje i posmatranje testa (slika ispod).

$ stress --cpu 2
$ ./watch-it
 13:09:14 up 5 days, 19:10,  2 users,  load average: 0.00, 0.00, 0.00
 13:09:44 up 5 days, 19:11,  2 users,  load average: 0.68, 0.16, 0.05
 13:10:14 up 5 days, 19:11,  2 users,  load average: 1.20, 0.34, 0.12
 13:10:44 up 5 days, 19:12,  2 users,  load average: 1.52, 0.50, 0.18
 13:11:14 up 5 days, 19:12,  2 users,  load average: 1.71, 0.64, 0.24
 13:11:44 up 5 days, 19:13,  2 users,  load average: 1.83, 0.77, 0.30

Stress komanda takođe može opteretiti sistem dodavanjem opterećenja memorije dodavanjem –io (input/output) i –vm (memorija) opcija.

Na sledećem primeru možemo videti kako je prvo pokrenuta upravo ova komada za pokretanje opterećenja memorije, a zatim je pokrenuta watch-it skripta.

$ stress --vm 2

$ watch-it-2             

$ watch-it-2
              total        used        free      shared  buff/cache   available
Mem:        6087064      662160     2519164        8868     2905740     5117548
Swap:       2097148           0     2097148
              total        used        free      shared  buff/cache   available
Mem:        6087064      803464     2377832        8864     2905768     4976248
Swap:       2097148           0     2097148
              total        used        free      shared  buff/cache   available
Mem:        6087064      968512     2212772        8864     2905780     4811200
Swap:       2097148           0     2097148

Druga opcija je da koristite –io opciju da dodate I/O aktivnost. Tada bi komanda trebalo da izgleda ovako:

$ stress --io 4

A zatim možete posmatrati testirane I/O koristeći iotop opciju. Imajte samo u vidu da iotop zahteva da imate root privilegije.

Pre

$ sudo iotop -o Total DISK READ:         0.00 B/s | Total DISK WRITE:        19.36 K/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:      27.10 K/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 269308 be/4 root        0.00 B/s    0.00 B/s  0.00 %  1.24 % [kworker~fficient]
    283 be/3 root        0.00 B/s   19.36 K/s  0.00 %  0.26 % [jbd2/sda1-8]

Posle

Total DISK READ:         0.00 B/s | Total DISK WRITE:         0.00 B/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:       0.00 B/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 270983 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 51.45 % stress --io 4
 270984 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 51.36 % stress --io 4
 270985 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 50.95 % stress --io 4
 270982 be/4 shs         0.00 B/s    0.00 B/s  0.00 % 50.80 % stress --io 4
 269308 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.09 % [kworker~fficient]

Na kraju da napomenemo i to da je stress samo jednan od brojnih alata za testiranje. Drugi, noviji alat je stress-ng koji nije predmet ovog testa, a o kojem možete više pročitati ovde.

Zaključak

U današnjem tekstu smo vam predstavili na koji način možete da testirate svoj Linux sistem po principu DIY (do-it-yourself). Važno je imati na umu da je testiranje neophodno i da ga treba raditi kada god postoji neka konkretna potreba za tim, ali i periodično kako bi se preventivno delovalo i izbegle neprijatne situacije sa sistemom.

Da li ste do sada koristili neke slične metode za testiranje vašeg sistema? Ako jeste, podelite sa čitaocima svoje iskustvo. Možda će vaša informacija nekome pomoći da bude bolji administrator.

Slični postovi:

Bez komentara

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *