Як контролювати процесор і пам’ять у 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.

  Як віддалено редагувати документи Libre Office на 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

Подібний до верхнього, але з додатковою інформацією. Як ви можете, він отримав стовпець команд, який зручний для визначення шляху процесу. А ще він барвистий.

  Як читати комікси на Linux за допомогою Peruse

htop може не бути встановлено за замовчуванням, але ви завжди можете зробити це, як показано нижче.

Встановіть 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.

Ви можете використати команду 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.

  Як створити резервну копію вашого профілю Geary Mail в Linux

Ви можете встановити nmon, як показано нижче.

dnf install nmon

Моніт

Моніт це веб-рішення з відкритим вихідним кодом для керування серверними ресурсами, демонами, файлами, каталогами, файловими системами тощо.

Моніт також отримав крутий віджет.

Його легке програмне забезпечення для моніторингу. Але тут є ще що дослідити.

Моніторікс

Легка утиліта з відкритим кодом для моніторингу сервера Linux. Моніторікс має вбудований HTTP, щоб ви могли перевіряти використання та інші речі в Інтернеті. Деякі інші звіти про використання включають:

  • Ядро/температура
  • Файлова система та введення/виведення
  • Мережевий трафік
  • Apache/Пошта/FTP/Nginx
  • MySQL/Varnish/Memcached

Monitorix також пропонує налаштування сповіщень, щоб ви могли отримувати сповіщення, коли щось не так. Це буде хорошим вибором, якщо ви керуєте хмарними серверами та шукаєте рішення для проактивного моніторингу.

Netdata

Netdata це моніторинг продуктивності системних ресурсів, програм, веб-серверів, баз даних, DNS, пошти, апаратних датчиків і багато іншого в режимі реального часу. Це відкритий код, і почати легко. Усі дані збираються, зберігаються та передаються для інтерактивного візуалізації. Дані збираються щосекунди, тому ви ніколи нічого не пропустите.

Його люблять багато лідерів галузі.

Отже, чого ви чекаєте, спробуйте взяти під контроль свої сервери Linux.

btop

btop це зручний повністю інтерактивний монітор ресурсів із гарним інтерфейсом користувача, який допомагає керувати серверами Linux.

Ви можете легко візуалізувати процеси у вигляді дерева, фільтрувати зі списку процесів і керувати ресурсами. btop також оснащено графіком із автоматичним масштабуванням, який показує використання мережі.

Крім того, ви також можете перевірити швидкість диска та завершити введення-виведення.

У Linux, FreeBSD і macOS є ще багато чого.

Висновок

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