Poraba strežniških sredstev

Za nemoteno delovanje vaše spletne strani ali aplikacije je zelo pomembno, da imajo programi (Apache spletni strežnik, MySQL strežnik ipd.) na voljo zadostno količino strežniških sredstev—prostor, RAM, CPU, I/O itn.

V primerih, ko sredstva niso presežena, aplikacije delujejo nemoteno. Čim pa katerega izmed sredstev zmanjka, se v delovanju aplikacij (in celotnega VPS strežnika) lahko pojavijo težave (npr. nedostopnost strani).

Poskrbimo, da poraba strežniških sredstev VPS ne presega zakupljenih količin. S tem bomo zagotovili, da bodo tako VPS strežnik kot tudi vse aplikacije na njem nemoteno delovale.

1 Pregled porabe prostora na strežniku

Eden ključnih strežniških sredstev je prostor, ki je aplikacijam (in operacijskemu sistemu) na voljo. K sreči nam je v sklopu Linux operacijskih sistemov na voljo vrsta ukazov, s katerimi lahko preverimo diskovno zasedenost in ob prekomerni zasedenosti ustrezno ukrepamo.

1.1 Prijava na strežnik

V prvem koraku se prek protokola SSH prijavimo na svoj VPS strežnik. Kot privzeto nas bo sistem postavil v korensko mapo uporabnika (v primeru root dostopa bo to mapa /root).

1.2 Pregled zasedenosti glavnih particij

Sistemi Linux imajo za pregled zasedenosti prostora pripravljen koristen ukaz df (ang. disk filesystem), ki povzame zasedenost prostega in zasedenega prostora na napravi.

# df -h

Zgornji ukaz nam bo izpisal stanje zasedenosti prostora in nam z možnostjo -h (ang. human readable) številke podal v bolj prijazni obliki—kilobajtih, megabajtih, gigabajtih.

Filesystem      Size  Used Avail Use% Mounted on

udev            953M     0  953M   0% /dev

tmpfs           194M  712K  194M   1% /run

/dev/sda1        19G  2.6G   16G  15% /

tmpfs           970M     0  970M   0% /dev/shm

tmpfs           5.0M     0  5.0M   0% /run/lock

tmpfs           970M     0  970M   0% /sys/fs/cgroup

/dev/sda15       61M  2.7M   58M   5% /boot/efi

tmpfs           194M     0  194M   0% /run/user/0

Iz pridobljenega izpisa je razvidno, da je korenska mapa / velika 19 GB in v sebi drži največjo količino podatkov (2,6 GB), kar predstavlja približno 15% zapolnjenost.

1.3 Določanje najbolj obsežnih direktorijev

Na podlagi zgoraj zapisanega nas bi, sploh v primerih prekomerne zasedenosti, zanimalo v kateri mapi, direktoriju, se skriva največja količina datotek in za katere vrste datotek gre. V primeru, da gre za nenujne datoteke (npr. starejše rezervne kopije, neaktualne strežniške zapise ipd.) lahko te navadno odstranimo in s tem sprostimo več GB prostora na strežniku.

# cd /

Z zgornjim ukazom se pomaknemo v korensko (ang. root) mapo, ki je skladno z gornjim izpisom tudi v največji meri zasedena. Z naslednjim ukazom bomo zasedenost posameznih map še nekoliko razdelali.

# du -sh /*

Zgornji ukaz, du (ang. disk usage) se od prejšnjega df razlikuje predvsem v podrobnosti izpisa—ukaz df predstavlja zelo grobo “ptičjo perspektivo” porabe celotnega diskovnega prostora VPS strežnika medtem ko je izpis ukaza du mnogo podrobnejši in se navezuje na zasedenost posameznih map znotraj datotečnega sistema.

0    /proc

76K    /root

712K    /run

0    /sbin

4.0K    /srv

0    /sys

72K    /tmp

1.6G    /usr

974M    /var

Iz pridobljenega izpisa lahko vidimo, da največji del prostora zaseda ravno mapa /usr. Smotrno bi bilo, da si ogledamo še podrobnejšo zasedenost omenjene mape. To preprosto storimo tako, da prejšnjemu du ukazu dodamo lokacijo mape /usr.

# du -sh /usr/*
221M    /usr/bin

4.0K    /usr/games

11M    /usr/include

1.1G    /usr/lib

4.0K    /usr/lib32

4.0K    /usr/lib64

120K    /usr/libexec

4.0K    /usr/libx32

56K    /usr/local

49M    /usr/sbin

202M    /usr/share

4.0K    /usr/src

V našem primeru je najbolj zasedena mapa /usr/lib, velika je približno 1,1 GB. S takim načinom se lahko pomikamo poljubno globoko v posamezne mape, direktorije, in določimo najbolj zasedene mape.

1.4 Izbris odvečnih datotek

Sedaj, ko smo našli najbolj obsežne direktorije, lahko podrobneje preučimo njihovo vsebino in, v kolikor je to možno, odstranimo odvečne datoteke in mape.

POZOR: Nekatere mape s svojimi datotekami, npr. Mapa /bin, /boot ipd. so ključnega pomena za splošno delovanje operacijskega sistema. Pred posegom v te mape (več podrobnosti spodaj) svetujemo, da se dodobra prepričate o potrebnosti omenjenih datotek.

/bin       Osnovne binarne datoteke za delovanje sistema

/boot      Statične datoteke zagonskega programa (ang. boot loader)

/dev       Datoteke naprave

/etc       Sistemske nastavitve glede na gostitelja (ang. host)

/lib       Osnovne deljene knjižnice in moduli jedra (ang. kernel)

/media     Točka za namestitev odstranljivih medijev

/mnt      Točka za namestitev začasnega datotečnega sistema

/opt       Programski paketki za razne dodatke

/sbin     Ključni sistemske binarne datoteke

/srv       Podatki za storitve, ki jih potrebuje sistem

/tmp      Začasne datoteke

/usr       Sekundarna hierarhija

/var       Spremenljivi podatki (npr. lokalno predpomnjenje)

Po izbrisu odvečnih datotek lahko zasedenost prostora spremljamo s katerim izmed zgoraj-predstavljenih ukazov, npr. df.

2 Spremljanje strežniških sredstev

V prejšnjem poglavju smo si ogledali možnosti spremljanja in analize zasedenosti prostora na nivoju celotnega VPS strežnika in za posamezne direktorije na njem. V tem razdelku se bomo srečali z možnostmi spremljanja preostalih strežniških sredstev, npr. RAM, CPU idr.

# top

Najenostavnejši način spremljanja trenutnih delujočih procesov je uporaba gornjega ukaza, top. Slednji izpiše stalno spreminjajoč se seznam tekočih procesov in jih razvrsti glede na CPU aktivnost posameznega procesa.

top - 12:50:49 up 4 days, 23 min,  1 user,  load average: 0.07, 0.02, 0.00

Tasks:  95 total,   3 running,  92 sleeping,   0 stopped,   0 zombie

%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

MiB Mem :   1939.7 total,    121.4 free,    359.2 used,   1459.1 buff/cache

MiB Swap:      0.0 total,      0.0 free,      0.0 used.   1350.1 avail Mem




    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                     

  29665 varnish+  20   0   86552   1260   1084 R   0.7   0.1  15:14.47 varnishncsa                                                                                                                                 

      1 root      20   0  170576  12736   8272 S   0.0   0.6   0:15.17 systemd                                                                                                                                     

      2 root      20   0       0      0      0 S   0.0   0.0   0:00.04 kthreadd                                                                                                                                    

      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                                                                      

      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                                                                                  

      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-kblockd                                                                                                                        

      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq

2.1 Ukaz top

Zavoljo boljšega poznavanja prikaza podatkov z ukazom top je spodaj na voljo razpredelnica z najbolj osnovnimi informacijami.

 

VrsticaPoljePomen
1topIme programa (ukaza)
12:50:49Trenutni čas
up 4 days, 23 minČas od kar je bila naprava zadnjič ponovno zagnana (ang. uptime)
1 userŠtevilo vpisanih uporabnikov
load average: 0.07, 0.02, 0.00Load average se nanaša na število procesov, ki čakajo na izvršitev, t.j. število procesov, ki so aktivni in si delijo CPU.

Vsaka izmed treh vrednosti predstavlja različen časovni interval; 60 s, 5 min in 15 min. Vrednosti pod 1.0 pomenijo, da naprava ni (pre)obremenjena.

2Tasks:Označuje število procesov in njihovo stanje
0.3 usProcent [%] CPU, rabljen za uporabnikove procese t.j. procese izven jedra (kernel)
0.3 syProcent [%] CPU, rabljen za procese jedra (kernel)
0.0 niProcent [%] CPU, rabljen s strani “nice” procesov—procesov z nizko prioriteto
99.3 idProcent [%] CPU, ki ni v uporabi
0.0 waProcent [%] CPU, ki čaka na I/O
3Mem:Prikaže koriščenje RAM
4Swap:Prikaže koriščenje “swap” navideznega pomnilnika

 

Program top razpolaga z več uporabnimi ukazi, najpomembnejša sta h (za prikaz pomoči pri uporabi programa) in seveda q za izhod iz vizualnega prikaza porabe sredstev.

V izrisani tabeli, ki se stalno spreminja, lahko zaznamo procese, ki zahtevajo večjo količino strežniških sredstev—v našem primeru lahko pod drobnogled vzamemo proces 29665 (stolpec PID):

 

StolpecPomen
PIDEdinstvena številka procesa (process ID)
USERUporabnik, ki je spožil proces
PRPredstavlja koliko deljenega spomina koristi proces
NI(ang. Nice value) predstavlja prioriteto procesa; negativna vrednost predstavlja višjo prioriteto, pozitivna nižjo
VIRTSkupno navideznega spomina, ki ga proces terja
RESKoličina fizičnega pomnilnika (ki ni swap) katerega koristi proces
SHRKoličina deljenega pomnilnika, ki ga proces koristi
%CPUKoliko CPU proces trenutno koristi
%MEMKoliko fizičnega pomnilnika proces trenutno koristi
TIME+Koliko časa proces koristi CPU
COMMANDKateri ukaz je proces pognal (sprožil)

 

Ko najdemo “podivjani” proces, npr. neustrezen PHP proces, katerega je potrebno zaustaviti (v našem primeru bomo zavoljo prikaza “ubili” proces varnish), ga lahko zaustavimo (“ubijemo”, ang. “kill”) z ukazom kill.

# kill 29665

V zgornjem primeru se številka 29665 nanaša na PID t.j. unikatno številko procesa, ki smo jo pridobili iz zgornje tabele.

POZOR: Tudi na tem mestu je vredno poudariti, da zaustavitev sistemskih procesov lahko negativno vpliva na delovanje celotnega VPS strežnika in lahko povzroči težave v delovanju spletnih aplikacij na strežniku.

V primeru, ko dotični proces ni “podivjan” marveč za svoje delovanje potrebuje le večji nabor strežniških sredstev, svetujemo nadgradnjo VPS strežnika.

Vam je članek pomagal?
Dislike 0
Ogledov: 189
Niste našli, kar ste iskali? Preiščite bazo znanja