Dedikuoti serveriai, VDS hostingas, debesų kompiuterija
Interneto vizija
Karjera El. paštas

Grįžti   Dedikuoti.lt forumas > Bendruomenės diskusijos > Pamokos > Tipinės problemos

Atsakyti
 
Temos įrankiai Ieškoti šioje temoje
  #1  
Senas 2018-04-20, 10:06
iv_vytenisg iv_vytenisg neprisijungęs
Super Moderator
 
Prisiregistravo: 2014 11
Žinutės: 50
Pagrindinis Proceso limitavimas serveryje



Pasitaiko atveju kai vienas procesas išnaudoja pakankamai didelį CPU kiekį taip trukdant kitiems procesams atlikti savo darbą. Vienas procesas turi laukti kol kitas pabaigs veiksmus ir tik tada pradėti savo darbą. Ši problema gali būti išsprendžiama limituojant CPU resursus pasitelkiant CPULimit programinę įrangą.

Pagrindis CPULimit tikslas yra sumažinti leidžiama CPU kiekį tuo metu kai atliekamas konkretus procesas. Limitavus nėra daroma įtaka nice reikšmei ar pirmenybių nustatymams - ribojamas konkretus CPU išnaudojimas. Taip pat, CPULimit adaptuojasi prie visos sistemos dinamiškai bei greitai.


0. Preliminarūs reikalavimai:

- OpenVZ virtualizacijos Linux serveris naudojantis mūsų parengtus Ubuntu/Debian/CentOS operacinės sistemos šablonus.

1. CPULimit diegimas:
  • Ubuntu/Debian operacinėse sistemose:

Kodas:
sudo apt-get install cpulimit
  • CentOS/Fedora operacinėse sistemoje visų pirma reikia įjungti EPEL repozitoriją:

Kodas:
sudo yum install epel-release
ir tada atlikti diegimą:

Kodas:
sudo yum install cpulimit

arba 

sudo dnf install cpulimit

2. Naudojimas:

Atlikus sėkmingą diegimą galite atlikti pavyzdinį CPU limitavimą. Visų pirma paleiskite komandą, kuri naudos didelį kiekį CPU. Susikurkite failą:

Kodas:
nano highcpu.sh
Ir įkelkite šį turinį:

Kodas:
#!/bin/bash
while :; do :; done;
Failą išsaugokite . Ši paprasta programa sukurs ciklą, kuris išnaudos maksimalų galima CPU resursą. Įgalinkite šį paleidimui:

Kodas:
chmod +x highcpu.sh
Ir paleiskite jį naudojant komandą:

Kodas:
./highcpu.sh &
Jums bus pateikiamas proceso ID numeris (PID), kaip pavyzdžiui:

Kodas:
[1] 1887
Ir patikrinkite, kiek resursų šis procesas išnaudoja paleisdami top komandą:

Kodas:
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1887 root      20   0    9508   1200   1012 R  99.7  0.0   0:21.46 highcpu.sh  
  237 root      20   0   47564   1604   1108 S   0.7  0.0  11:51.14 rpcbind     
  379 root      20   0   71532   3108   1912 S   0.3  0.0   0:29.04 apache2     
    1 root      20   0   37396   3644   2108 S   0.0  0.0   0:09.13 systemd     
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd/1+ 
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khelper/15+ 
   72 root      20   0  133368  70296  70000 S   0.0  0.4   1:38.00 systemd-jo+ 
   75 root      20   0   41628   1452   1004 S   0.0  0.0   0:00.38 systemd-ud+ 
  239 message+  20   0   42828   2044   1492 S   0.0  0.0   0:00.29 dbus-daemon 
  246 root      20   0   28484   1596   1292 S   0.0  0.0   0:00.51 systemd-lo+ 
  248 root      20   0   26008   1128    892 S   0.0  0.0   0:00.60 cron        
  250 syslog    20   0  184624   2580   1184 S   0.0  0.0   0:31.92 rsyslogd    
  289 root      20   0   65448   2080   1364 S   0.0  0.0   0:17.71 sshd        
  318 root      20   0   89652   1280    336 S   0.0  0.0   0:00.00 saslauthd   
  320 root      20   0   89652    964     20 S   0.0  0.0   0:00.00 saslauthd   
  347 root      20   0   14996    832    640 S   0.0  0.0   0:00.00 xinetd      
  349 root      20   0   12780    844    708 S   0.0  0.0   0:00.00 agetty
Kaip pastebima iš top komandos atsakymo, highcpu.sh procesas išnaudoja 99.7% CPU. Kadangi yra išnaudojamas toks kiekis, nepavyktų dabar paleisti kito proceso. Po kelių minučių operacinė sistema užstrigtų. Šioje vietoje gali padėti CPULimit.

Galime apriboti šio proceso veikimas naudojant CPULimit įrankį. Šiuo atveju apribosime procesą iki 30% CPU:

Kodas:
cpulimit -l 30 -p 1887 &
* -l 30: apriboja procesą iki 30%;
* -p 2331: yra highcpu.sh PID.

Dabar patikrinkite CPU išnaudojimą su top komanda:

Kodas:
top
ir matome atsakymą:

Kodas:
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND     
 1887 root      20   0    9508   1200   1012 R  30.7  0.0   0:21.46 highcpu.sh  
  237 root      20   0   47564   1604   1108 S   0.7  0.0  11:51.14 rpcbind     
  379 root      20   0   71532   3108   1912 S   0.3  0.0   0:29.04 apache2     
    1 root      20   0   37396   3644   2108 S   0.0  0.0   0:09.13 systemd     
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd/1+ 
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 khelper/15+ 
   72 root      20   0  133368  70296  70000 S   0.0  0.4   1:38.00 systemd-jo+ 
   75 root      20   0   41628   1452   1004 S   0.0  0.0   0:00.38 systemd-ud+ 
  239 message+  20   0   42828   2044   1492 S   0.0  0.0   0:00.29 dbus-daemon 
  246 root      20   0   28484   1596   1292 S   0.0  0.0   0:00.51 systemd-lo+ 
  248 root      20   0   26008   1128    892 S   0.0  0.0   0:00.60 cron        
  250 syslog    20   0  184624   2580   1184 S   0.0  0.0   0:31.92 rsyslogd    
  289 root      20   0   65448   2080   1364 S   0.0  0.0   0:17.71 sshd        
  318 root      20   0   89652   1280    336 S   0.0  0.0   0:00.00 saslauthd   
  320 root      20   0   89652    964     20 S   0.0  0.0   0:00.00 saslauthd   
  347 root      20   0   14996    832    640 S   0.0  0.0   0:00.00 xinetd      
  349 root      20   0   12780    844    708 S   0.0  0.0   0:00.00 agetty
Kaip pastebite top komandos atsakyme, highcpu.sh yra sumažintas iki 30.7% (gali būti pastebima -3/+3% paklaida). Likę resursai gali būti naudojami kitiems procesams.

Papildomas galimas limitavimas yra naudojant vykdomosios programos failo pavadinimą. Kaip pavyzdžiui, mūsų failo highcpu.sh limitavimas būtų atliekamas naudojant šią komandą:

Kodas:
cpulimit -l 30 ./highcpu.sh &
Taip pat, galite pamatyti procesus, kurie veikia fone (angl. background) naudojant šią komandą:

Kodas:
fg
CPULimit taip pat gali būti naudojamas norint sužinoti aplikacijos elgseną kai procesui yra apribojamas CPU resursas.
Prisegti paveikslėliai
Paspauskite paveiksliuką, jei norite padidinti

Pavadinimas:	cpu-exceeded-d94fb31570.png‎
Peržiūros:	53
Dydis:	13.4 KB
ID:	345  
Atsakyti su citata
Atsakyti

Temos įrankiai Ieškoti šioje temoje
Ieškoti šioje temoje:

Detali paieška

Žinučių rašymo taisyklės
Jūs negalite kurti naujų temų
Jūs negalite rašyti žinučių
Jūs negalite įkelti failų
Jūs negalite redaguoti savo įrašų

BB kodas yra Įjungtas
Šypsenos yra Įjungtas
[IMG] kodas yra Įjungtas
HTML kodas yra Išjungtas

Greita navigacija


Visi laikai yra GMT +3. Šiuo metu yra 16:23.


Powered by vBulletin®
Copyright ©2000 - 2018, vBulletin Solutions, Inc.