Як кантраляваць працэсар і памяць у Linux?

Ведайце, колькі асобны працэс або агульнасістэмная спажываюць працэсар або памяць.

Як сістэмнаму адміністратарам, вам часта даводзіцца сутыкацца з інцыдэнтамі, калі праграма працуе павольна або не рэагуе з-за высокага выкарыстання працэсара/памяці/сеткі. Калі на серверы знаходзіцца толькі адзін працэс, то лёгка даведацца, калі гэты працэс спажывае ўсе рэсурсы. Аднак уявіце сабе агульны сервер, дзе працуе некалькі службаў, і вам трэба знайсці, якая з’ядае ўсе рэсурсы.

Ёсць шмат праграм для маніторынгу, якія робяць гэта адразу. Але калі ў вас яго няма або вы шукаеце рашэнне на аснове каманд, то вось вам. Усе яны БЯСПЛАТНЫЯ!

верх

Вы можаце пачаць з прагляду top або htop выніку, каб убачыць агляд працэсаў.

Як вы бачыце ніжэй, гэта дае выдатнае ўяўленне пра тое, што выкарыстоўваюць усе працэсы. Калі вы паглядзіце на першы з іх, MySQL займае 11,9% працэсара і 2,5% працэсара.

top - 11:57:33 up 0 min,  1 user,  load average: 3.69, 0.96, 0.32
Tasks: 165 total,   2 running, 113 sleeping,   0 stopped,   0 zombie
%Cpu(s): 21.0 us,  5.5 sy,  0.0 ni, 70.5 id,  1.7 wa,  0.0 hi,  1.3 si,  0.0 st
KiB Mem :  7637308 total,  5802888 free,   849512 used,   984908 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6495648 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 1986 netdata   20   0 1738856 191560  22948 S  11.6  2.5   0:02.30 mysqld                                                                                                         
 3021 www-data  20   0  255288  78420  55484 S   6.6  1.0   0:01.55 php-fpm                                                                                                        
 3138 www-data  20   0  253096  79780  59228 S   6.6  1.0   0:00.92 php-fpm                                                                                                        
 3153 www-data  20   0  255116  79088  56472 S   5.0  1.0   0:00.70 php-fpm                                                                                                        
 3037 www-data  20   0  257200  81088  56216 S   4.3  1.1   0:01.50 php-fpm                                                                                                        
 3048 www-data  20   0  257088  78740  55380 S   4.3  1.0   0:01.46 php-fpm                                                                                                        
 3054 www-data  20   0  254160  72168  52108 S   3.7  0.9   0:01.32 php-fpm                                                                                                        
 3135 www-data  20   0  255084  75912  54836 S   3.7  1.0   0:00.91 php-fpm                                                                                                        
 3051 www-data  20   0  254096  73804  51964 S   3.0  1.0   0:01.38 php-fpm                                                                                                        
 2962 www-data  20   0   45280   7284   3488 R   2.0  0.1   0:00.22 openresty                                                                                                      
 1062 netdata   20   0  338748  76144   6720 S   1.0  1.0   0:01.31 netdata                                                                                                        
 1702 netdata   20   0   21852   4232   2352 S   1.0  0.1   0:00.34 apps.plugin                                                                                                    
 1729 netdata   20   0   18636   3280   2764 S   0.7  0.0   0:00.05 bash                                                                                                           
 1980 netdata   20   0   62008  12896   5796 S   0.7  0.2   0:00.14 redis-server                                                                                                   
   11 root      20   0       0      0      0 I   0.3  0.0   0:00.14 rcu_sched                                                                                                      
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:00.92 dockerd                                                                                                        
 1857 root      20   0   10600   5564   4276 S   0.3  0.1   0:00.03 containerd-shim                                                                                                
 2045 root      20   0    9948   6028   5016 S   0.3  0.1   0:00.14 forego                                                                                                         
 2934 root      20   0   13616   8760   5928 S   0.3  0.1   0:00.07 docker-gen                                                                                                     
 2966 systemd+  20   0   25784   7924   2340 S   0.3  0.1   0:00.06 nginx

Топ усталяваны практычна на ўсіх дыстрыбутывах Linux.

Праверце гэта:  Як выдаліць праграмы з тэрмінала ў Linux

Пасля таго, як вы выявіце падазраванага, вы можаце засяродзіцца на гэтым працэсе, а не на ўсім, як вы бачылі вышэй. Вы ўсё яшчэ можаце выкарыстоўваць каманду top, але з некаторым аргументам.

Дапусцім, вы ведаеце ідэнтыфікатар працэсу (PID); вы можаце выкарыстоўваць каманду ніжэй.

top -p $PID

Ніжэй прыклад top -p 3102

top - 11:59:56 up 3 min,  1 user,  load average: 0.72, 0.70, 0.31
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.9 sy,  0.0 ni, 89.1 id,  0.3 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  7637308 total,  5802024 free,   783672 used,  1051612 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6555636 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                        
 3102 www-data  20   0  329500  82376  60640 S   0.0  1.1   0:03.35 php-fpm

Вы таксама можаце выкарыстоўваць grep з top. Ніжэй прыклад праверкі выкарыстання Docker.

[email protected]:~# top | grep docker
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.38 dockerd                                                                                                        
 2934 root      20   0   14676   9652   5928 S   0.3  0.1   0:00.54 docker-gen                                                                                                     
 1007 root      20   0 1347424  74524  38872 S   0.3  1.0   0:01.39 dockerd                                                                                                        
 1007 root      20   0 1347424  74524  38872 S   1.0  1.0   0:01.42 dockerd                                                                                                        
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.55 docker-gen                                                                                                     
 2934 root      20   0   14740   9652   5928 S   0.3  0.1   0:00.56 docker-gen

htop

Падобны да верхняга, але з дадатковай інфармацыяй. Як вы можаце, ён атрымаў слупок каманд, які зручны для ідэнтыфікацыі шляху працэсу. А яшчэ ён маляўнічы.

htop можа не быць усталяваны па змаўчанні, але вы заўсёды можаце зрабіць гэта, як паказана ніжэй.

Праверце гэта:  Як зрабіць класічную відэагульнявую кансоль на базе Linux з дапамогай RecalboxOS

Усталюйце htop на Ubuntu

apt-get install htop

Усталюйце htop на CentOS/RHEL 8.x

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop

позіркі

Як вынікае з назвы, вы атрымліваеце прагляд выкарыстання сістэмы на адным экране. Запушчаныя працэсы сартуюцца па загрузцы ЦП.

Вы можаце ўсталяваць glances на CentOS 8 з дапамогай DNF, як паказана ніжэй.

dnf install glances

для CentOS7 вы можаце выкарыстоўваць YUM

yum install glances

зверху

Падобны да пералічанага вышэй, але з выдатнай функцыяй для запісу вываду ў файл, каб вы маглі праглядаць іх пазней. Уявіце, што ў пэўны прамежак часу ўзнікла праблема. Вы можаце запланаваць запіс вываду ў файл праз crontab ці іншы спосаб, а пазней вы можаце прайграць.

Каб запісаць вынік у файл:

atop -w filename

і для прайгравання:

atop -r filename

Ён падтрымлівае некалькі аргументаў, такіх як інтэрвал, узоры і г.д., і я настойліва рэкамендую зірнуць на старонку кіраўніцтва.

Калі вы проста зацікаўлены ў ліквідацыі непаладак у рэжыме рэальнага часу, то проста выканайце зверху, і вы павінны ўбачыць, як паказана ніжэй.

Вы можаце ўсталяваць зверху, як паказана ніжэй.

dnf install atop

пс

Давайце зараз праверым каманду ps.

Вы можаце выкарыстоўваць каманду ps з PID, каб надрукаваць іх выкарыстанне працэсара і памяці.

ps -p $PID -o %cpu,%mem

Выхад павінен выглядаць так.

[email protected]:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
 0.2  3.0
[email protected]:~#

nmon

Інтэрактыўны інструмент маніторынгу каманднага радка для выкарыстання працэсара, памяці, дыскаў, сеткі, NFS і віртуальнай памяці. Каб праглядзець верхні працэс (па выкарыстанні), вы можаце выканаць nmon і націснуць кнопку t.

Праверце гэта:  Як гуляць у гульні Atari на Linux

Вы можаце ўсталяваць nmon, як паказана ніжэй.

dnf install nmon

Моніт

Моніт гэта вэб-распрацоўка з адкрытым зыходным кодам для маніторынгу рэсурсаў сервера, дэманаў, файлаў, каталогаў, файлавых сістэм і г.д.

Monit таксама атрымаў класны віджэт.

Яго лёгкае праграмнае забеспячэнне для маніторынгу. Але тут ёсць яшчэ што даследаваць.

Маніторыкс

Лёгкая ўтыліта з адкрытым зыходным кодам для маніторынгу сервера Linux. Маніторыкс атрымаў убудаваны HTTP, каб вы маглі правяраць выкарыстанне і іншыя рэчы ў Інтэрнэце. Некаторыя іншыя справаздачы аб выкарыстанні ўключаюць:

  • Ядро / тэмпература
  • Файлавая сістэма і ўвод-вывад
  • Сеткавы трафік
  • Apache/пошта/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix таксама прапануе канфігурацыю абвестак, каб вы маглі атрымліваць апавяшчэнні, калі ўсё не так. Гэта будзе добрым выбарам, калі вы кіруеце воблачнымі серверамі і шукаеце рашэнне для актыўнага маніторынгу.

Netdata

Netdata гэта маніторынг прадукцыйнасці ў рэжыме рэальнага часу для сістэмных рэсурсаў, прыкладанняў, вэб-сервераў, баз дадзеных, DNS, пошты, апаратных датчыкаў і шмат іншага. Гэта з адкрытым зыходным кодам, і пачаць лёгка. Усе даныя збіраюцца, захоўваюцца і перадаюцца для інтэрактыўнай візуалізацыі. Дадзеныя збіраюцца кожную секунду, так што вы нічога не прапусціце.

Любяць многія лідэры галіны.

Такім чынам, чаго вы чакаеце, паспрабуйце ўзяць пад кантроль свае серверы Linux.

btop

btop гэта зручны цалкам інтэрактыўны манітор рэсурсаў з прыгожым інтэрфейсам, які дапамагае вам кіраваць серверамі Linux.

Вы можаце лёгка візуалізаваць працэсы ў выглядзе дрэва, фільтраваць са спісу працэсаў і кіраваць рэсурсамі. btop таксама пастаўляецца з графікам аўтаматычнага маштабавання, які паказвае выкарыстанне сеткі.

Акрамя таго, вы таксама можаце праверыць хуткасць дыска і завяршыць дзейнасць уводу-вываду.

У Linux, FreeBSD і macOS вы можаце выпрабаваць яшчэ больш.

Заключэнне

Я спадзяюся, што прыведзеныя вышэй інструменты дапамогуць вам візуалізаваць выкарыстанне сервера ў рэжыме рэальнага часу, каб вы маглі прыняць неабходныя меры. Калі вы толькі пачалі ў якасці сістэмнага адміністратара і хочаце прайсці практычную падрыхтоўку, то праверце гэта Курс Udemy.