Оперативни системи

Проналажење Скрипти које Троше CPU и RAM на Linux Серверу Коришћењем "htop" Команде

  • 16 минута за читање
  • Hostragons тим
Проналажење Скрипти које Троше CPU и RAM на Linux Серверу Коришћењем "htop" Команде

Команда htop на Linux серверу је један од најпрактичнијих алата за праћење који се користи за идентификацију скрипти које прекомерно троше CPU и RAM у реалном времену. На htop екрану можете прегледати колоне CPU%, MEM%, PID, USER, TIME+ и COMMAND како бисте видели која PHP, Python, Node.js, cron, база података или системски процес оптерећује сервер; затим можете безбедно интервенисати прегледајући власника процеса, пут до датотеке и сврху рада.

Без обзира на то да ли користите делљени хостинг, VPS, VDS или посебан сервер, велики део изненадних успоравања проистиче из неконтролисаних скрипти. На пример, неисправан WordPress додатак, PHP датотека која улази у бесконачну петљу, интензивна cron задача, неоптимизован SQL упит или компромитована веб датотека могу за неколико минута подићи употребу CPU на 100%. Када се повећава потрошња RAM-а, сервисе може започети успоравање, MySQL везе могу пати, веб странице могу приказати 503 грешку, или Linux језгро може завршити неке процесе помоћу OOM Killera.

У овом водичу ћемо корак по корак обрадити инсталацију htop, како да читате екран, како да разликујете скрипте које троше CPU и RAM, како да пронађете пут до датотеке преко PID-а, и како да безбедно интервенишете у процес. Такође ћемо се осврнути на сумње о безбедности, контролу cron-а, анализу логова и применљиве оптимизационе предлоге како би се избегле поновљене ситуације. Ако често имате проблема са ограничењем ресурса на вашем серверу, можете прегледати странице VPS серверски пакети и Веб хостинг високе перформансе за преглед опција у избору инфраструктуре.

Шта је htop и зашто је кориснији од top команде?

htop је терминалски алат који служи за интерактивно праћење процеса на Linux системима. Сличан је класичној top команди, али пружа читљивији интерфејс, обојене индикаторе ресурса, лако сортирање, претрагу, филтрирање и управљање процесима. Због тога је htop један од првих алата на које системски администратори обраћају пажњу када брзо дијагностикују проблеме на активном серверу.

Са htop-ом можете у реалном времену видети следеће информације:

  • Процентуално коришћење CPU од стране сваког процеса
  • Процентуално коришћење RAM и количину меморије коју сваки процес користи
  • PID број процеса
  • Корисника који покреће процес
  • Назив командне линије или скрипте
  • Време рада и вредност приоритета
  • Просечна оптерећеност, укупни RAM, swap и коришћење CPU језгара

Посебно у хостинг окружењу, где на истом серверу ради више веб страница, корисника или сервиса, само гледање укупне потрошње ресурса није довољно. Потребно је пронаћи извор проблема, да ли је у питању корисник, веб страница, cron задатак или нека скрипта. Команда htop на Linux серверу у овом тренутку пружа брзу прву дијагнозу.

Инсталација htop: Команде Према Дистрибуцији

У многим модерним Linux дистрибуцијама htop можда неће бити преднастављен. Ако имате root или sudo права, можете га инсталирати за неколико секунди. Пре инсталације, ажурирање списка пакета, посебно на новим серверима, смањује ризик од грешака.

Инсталација htop на Ubuntu и Debian серверима

На серверу базираном на Ubuntu или Debian можете користити следеће команде:

sudo apt update

sudo apt install htop -y

Након инсталације, можете покренути алат тако што ћете у терминал уписати htop. Ако немате sudo права, можда ћете морати да затражите подршку од вашег провајдера хостинга. Ако користите управљиви VPS, root приступ обично припада вама.

Инсталација на AlmaLinux, Rocky Linux, CentOS и RHEL

На RHEL базираним системима, пакет менаџер може бити dnf или yum у зависности од верзије:

sudo dnf install htop -y

На старијим верзијама CentOS-а, можда ће бити потребан EPEL репозиторјум:

sudo yum install epel-release -y

sudo yum install htop -y

Ако је инсталација успешна, када упишете htop у терминал, отвара се обојени монитор. Ако сте нови у управљању сервером, садржај водич за Линус команде може бити користан практичан почетак.

Како читати htop екран: Шта значе колоне?

Када се отвори htop, на врху екрана налазе се информације о CPU језгрима, RAM, swap-у, броју задатака, броју нити, просечној оптерећености и uptime подацима. У доњем делу се налазе списак активних процеса. Најчешће коришћена подручја у дијагнози проблема су следећа.

Како читати htop екран: Шта значе колоне?
Колона Значење Kада треба сумњати?
PID Јединствени идентификациони број процеса. Потребно је за преглед пута до датотеке и веза.
USER Linux корисник који покреће процес. Ако процес ради под непознатим корисником, потребно је да се провери.
CPU% Тренутна стопа коришћења CPU од стране процеса. Процеси који дуго остају између 80-100% треба испитати.
MEM% Деловање процеса у укупном RAM-у. Ако једна скрипта користи 20% или више RAM-а, то је ризично.
TIME+ Укупно време CPU-а које процес користи. Показује послове који дуго троше ресурсе, а не краткорочне.
COMMAND Информација о активном налогу, услузи или скрипти. У процесима као што су php, python, node, perl, bash, java треба тражити пут до датотеке.

Важно је напоменути да краткорочни скок у CPU-у није увек проблем. На пример, током резервне копије, визуелне оптимизације, чишћења кеша или током интензивног саобраћаја, CPU може краткорочно да се повећа. Проблем настаје када исти процес дуго времена троши високу количину CPU или RAM-а, просечна оптерећеност прелази значајно изнад броја језгара, и веб сервиси постају недоступни.

Проналажење Скрипти које Троше CPU помоћу htop

Да бисте пронашли скрипте које прекомерно троше CPU, док сте на htop екрану, можете одабрати подручје за сортирање помоћу F6 или сортирати по CPU% колони. У неким терминалима, ако је подршка за миш укључена, клик на заглавље CPU% може бити довољан. Процеси који су на врху тренутно су они који највише користе CPU.

Корак 1: Сортирајте по CPU% колони

Док htop ради, сортирајте процесе по коришћењу CPU. На пример, ако php-fpm, php, python3, node, java, mysqld или bash процеси редовно остају на врху, запишите тај процес. Код једнојезгарног коришћења 100% изгледа нормално, али код вишезначног система, процес може показивати вредности као 200 или 400%. То значи да процес користи више језгара.

Корак 2: Запишите PID и USER информације

Запишите PID број и USER информације сумњивог процеса. На пример, ако видите PID 24819, USER као siteuser и COMMAND као php /home/siteuser/public_html/wp-cron.php, онда је вероватно да проблем има везе са cron-ом или механизам WordPress-а на одговарајућој веб страници. Ако је COMMAND податак кратак, можете активирати подешавања htop-а да прикажу целу командну линију или добити детаље помоћу ps команде.

Корак 3: Видите стварну команду процеса

Да бисте видели детаљну командну линију преко PID-а, можете користити следећу команду:

ps -fp PID

Пример употребе:

ps -fp 24819

Овај излаз обично показује из које датотеке се скрипта покреће. Ако команда изгледа као php /home/korisnik/public_html/index.php, то би могло бити веб захтев узрокован саобраћајем. Ако изгледа као php /home/korisnik/public_html/wp-content/plugins/bilinmeyen-eklenti/task.php, онда би могао бити проблем заснован на додатку.

Корак 4: Провера пута до датотеке и отворених датотека

За преглед које датотеке користи процес, lsof алат је веома користан:

lsof -p PID

Ова команда ће показати отворене датотеке, библиотеке, логове и мрежне везе које процес држи отвореним. У веб хостинг окружењу, овај излаз може помоћи да се разуме која веб директорија је активна. На пример, ако видите необичну PHP датотеку у /home/example/public_html/wp-content/uploads, то може бити знак безбедносне повреде. У таквом случају, само завршетак процеса није довољан; потребно је очистити датотеке, променити лозинку, ажурирати додатке и извршити безбедносно скенирање. За конфигурације SSL и безбедне везе, можете прегледати страницу Решења за SSL сертификате.

Проналажење Скрипти које Троше RAM уз htop

Проблеми са RAM-ом могу бити подмуклији од проблема са CPU-ом. Када CPU порасте, обично се осећа краткорочно успоравање; када RAM понестане, сервиси могу затворити неочекивано, swap може бити интензивно кориштен, а у целини ће доћи до повећања кашњења на серверу. На htop екрану можете добити списак процеса који највише користе меморију сортирањем по MEM% колони.

Разумевање Односа MEM%, RES и Swap

htop у подразумеваном приказу показује MEM% процент. У неким конфигурацијама, колоне VIRT, RES и SHR могу бити видљиве. Када анализирате RAM, RES вредност је посебно важна; она представља стварни простор који процес користи у физичкој меморији. VIRT вредност не значи увек стварну потрошњу RAM-а, па самостално може бити обмањујућа.

На пример, на VPS-у са 4 GB RAM, ако један PHP процес користи 900 MB RES, то није нормално. Слично, ако Node.js апликација временом порасте са 200 MB на 1.5 GB, то указује на могућност цурења меморије. Висока потрошња RAM-а на MySQL или MariaDB страни може понекад бити нормално понашање кеша; у овом случају, перформансе упита, подешавања буфера и укупна системска меморија требају бити заједно процењени.

Типични Разлози за Потрошњу RAM-а у Скриптама

  • PHP, Python или Node.js кодови који улазе у бесконачну петљу
  • Велике CSV, XML или JSON датотеке које се у исто време учитавају у меморију
  • Неоптимизовани WordPress додаци и функције теме
  • Обрада слика, генерисање PDF-ова или конверзија видео записа
  • Недовољна употреба кеша због поновљених тешких упита
  • Трафик ботова или напада који покрећу исту скрипту у великом броју
  • Дуги позадински сервиси са цурењем меморије

У овим случајевима, само затварање процеса помоћу kill команде пружа привремено олакшање. За трајно решење треба анализирати шта скрипта ради, које улазне податке активира и зашто не ослобађа меморију.

Тражите, филтрирајте и прегледајте хијерархијску структуру у htop-у

Ако на серверу ради стотине процеса, ручно претраживање у списку постаје тешко. htop нуди корисне пречице за ово. Можете претраживати помоћу F3, применити филтер помоћу F4, или прећи на хијерархијски приказ са F5. Хијерархијски приказ је посебно важан за видљивост родитељ-дете односа. На пример, можете јасније видети php-fpm child процесе који раде под nginx или Apache, скрипте које покреће cron, или Node.js сервисе које управља supervisor.

Практични Примери Филтера

  • упишите php да бисте видели само PHP процесе.
  • упишите python да бисте изабрали Python скрипте.
  • упишите wp-cron да бисте проверили WordPress cron понашање.
  • упишите node да бисте истражили Node.js апликације.
  • филтрирајте по корисничком имену да бисте видели процесе једног хостинг налога.

Ови филтери штеде време, посебно на многокорисничким серверима. На пример, ако на истом серверу хостује 30 различитих веб страница, брзо се може разумети извор проблема прегледањем USER колоне и пута до команде. Ако желите да поједноставите управљачку страну за ваше доменске пројекте, можете погледати страницу доменска претрага и регистрација.

План Безбедне Интервенције за Сумњиви PID

Када пронађете процес који троши ресурсе, може бити примамљиво одмах користити kill -9. Међутим, овај приступ може довести до губитка података, прекинутог писања или неконсистентности у услугама. Потребно је следити безбеднији план.

1. Документишите Процесс

Прво запишите PID, USER, COMMAND, CPU%, MEM% и време. По могућству, направите снимак екрана htop-а. Ови подаци олакшавају упоређивање у поновљеним проблемима. Посебно у агенцијама, е-трговини или корпоративним пројектима, ови подаци могу бити корисни при техничком објашњавању клијенту.

2. Проверите Пут до Процеса

Потврдите пут до датотеке користећи ps -fp PID и lsof -p PID излаз. Ако се датотека налази у коренској директорији веба, прегледајте логове одговарајућих апликација. За WordPress, wp-content/debug.log, за веб сервер access log и error log, а за PHP-FPM slow log пружају важне индикације.

3. Прво Испробајте Нежно Завршавање

Aко је процес заиста неконтролисан, пошаљите стандардни сигнал за завршетак:

kill PID

Сачекајте неколико секунди и проверите у htop-у да ли је процес затворен. Уколико се не затвара и озбиљно нарушава здравље система, можете користити следећу команду као последњу опцију:

kill -9 PID

kill -9 сигнал затвара процес без шансе за чишћење. Стога, треба бити опрезан при коришћењу за операције базе података, процесе писања датотека или задатке резервне копије.

4. Ако се Поново Покреће, Пронађите Триггер

Ако затворите процес, али се он убрзо поново покреће, разлог може бити cron, systemd service, supervisor, веб захтев или бот трафик. За cron записи, користите crontab -l, за системске услуге systemctl status servisime, а за веб трафик проверите access log. Ако је проблем изазван WordPress wp-cron-ом, треба прегледати стварну cron конфигурацију и политику кеширања.

Комбиновање htop Налазака са Логовима

Комбиновање htop Налазака са Логовима

htop вам показује шта троши ресурсе; логови вам помажу да разумете зашто их троши. Када се ова два податка не користе заједно, дијагноза остаје непотпуна. На пример, htop може показивати да php-fpm процес користи 180% CPU; али без access log-а не можете видети који URL или бот покреће овај процес.

Примери логова које можете проверити су:

  • Access log веб сервера: Показује URL адресе које примају интензивне захтеве.
  • Error log веб сервера: Покazuje PHP грешке, дозволе датотека и 500 грешке.
  • Slow log PHP-FPM: Показује споре PHP датотеке и функције.
  • Slow query log MySQL: Идентификује тешке SQL упите.
  • Auth log или secure log: Приказује сумњиве покушаје пријаве.
  • Cron log: Показује када су заказани задаци покренути.

На пример, ако видите да PID са високим коришћењем CPU добија хиљаде захтева на /wp-admin/admin-ajax.php у истом минуту у access log-у, проблем може бити у додатку, бот трафику или лошем AJAX процесу. У том случају, размотрите WAF, rate limit, кеширање и оптимизацију додатака. За ширу обраду перформанси веб страница, садржај оптимизација брзине веб сајта може бити користан.

Како Разликовати Нормално Оптерећење од Проблематичног?

Свака висока потрошња ресурса не значи кризу. Потребно је узети у обзир хардвер сервера, ниво трафика, тип апликације и процедуре одржавања. За VPS са 2 језгра, ако просечна оптерећеност дуже време остане на 6-8, то је озбиљно уска грла. На серверу са 16 језгара, иста вредност може бити нормална. Због тога, када тумачите просечну оптерећеност, увек морате знати број језгара.

Како Разликовати Нормално Оптерећење од Проблематичног?
Опсервација Потенцијалне Ситуације Препоручена Акција
CPU кратко 100%, затим се враћа на нормалу Привремени интензиван процес Проверите логове, не интервенишите одмах.
Исти PID користи високи CPU минутима Бесконачна петља или тежак процес Пронађите PID пут, прегледајте скрипту.
RAM непрестано расте и не опада Цурење меморије Проверите код сервиса и подешавања радника.
Swap употреба брзо расте Недостатак физичког RAM-а Планирајте оптимизацију RAM-а или надоградњу пакета.
Постоји много истих PHP процеса Трафик ботова или интензивни захтеви Проверите access log, firewall и кеширање.

Ова упоредба помаже вам да разликујете непотребну панику од стварне кризе перформанси. Посебно у е-трговинским веб страницама, кампање, интеграције плаћања и ажурирања залиха могу привремено довести до повећања ресурса. Међутим, ако ово повећање нарушава корисничко искуство, оптимизација апликације и капацитет сервера морају бити заједно процењени.

Сумња на Безбедност: Да ли Скрипте које Троше Ресурсе Могу Бити Шкодљиве?

Скрипте које троше CPU или RAM не морају увек бити невине грешке. На компромитованим веб страницама, нападачи могу покретати скрипте за слање спама, крипто рударство, прокси трафик, DDoS ботове или скрипте за позадинску приступ. Непредвидиви корисници који раде под htop-ом са необичним командама, насумичним именима датотека, бинарним датотекама које се покрећу из /tmp или PHP датотекама у public_html/uploads требају бити озбиљно схваћени из безбедносног аспекта.

Сумњиви Знаци

  • Неправилни или насумични називи датотека у COMMAND колони
  • Датотеке које раде из /tmp, /dev/shm или uploads директорија
  • Процеси perl, python или bash који нормално не би требало да постоје
  • Процеси који генеришу високе спољне мрежне везе
  • Исти корисник покреће много процеса у кратком временском периоду
  • Недавне неовлаштене измене у веб датотекама

У оваквим ситуацијама, пре затварања процеса, покушајте да добијете доказе из командних излаза. Након тога, проверите дозволе датотека, изолирајте штетне датотеке, промените све лозинке на панелу и CMS-у, ажурирајте основне датотеке додатака и тема и извршите безбедносно скенирање. Такође, коришћење двоструке аутентикације на администраторским панелима и уклањање непотребних писаћих дозвола смањује ризик на дуге стазе.

Најбоље Праксе за Превенцију Поновног Појављивања Проблема са Перформансама

Налазак проблема уз помоћ htop-а је важан; али прави значај лежи у спречавању поновног појављивања истог проблема. Следеће мере могу значајно смањити прекиде узроковане CPU и RAM ресурсима на Linux серверима.

  • Подесите PHP memory_limit, max_execution_time и pm.max_children вредности према капацитету сервера.
  • Користите механизам кеширања у WordPress, Joomla или прилагођеним софтверима.
  • Уклоните непотребне додатке, теме и модули.
  • Оптимизујте тешке упите помоћу MySQL slow query log-а.
  • Не групишите cron задатке у исту минуту; радите их у интервалима.
  • Примените rate limit, robots.txt и правила за ватрозид за трафик ботова.
  • Редовно ротација логова апликација; пратите ефекат великих лог датотека на диск и RAM.
  • Пратите серверске метрике не само у време кризе, већ и редовно.

Ако, упркос оптимизацијама, потрошња ресурса остаје висока, проблем можда неће бити само у софтверу. Можда је трафик порастао, апликација се развила или је тренутни хостинг пакет недовољан. У таквом случају, разматрање скалабилног VPS-а, више RAM-а, бржег NVMe диска или сервера са изолованим ресурсима постаје разумно. Можете упоредити опције за потребну анализу путем Хостинг пакети и корпоративна решења за сервере.

Пример Сценарија: Патка CPU на WordPress Сајту

Погледајмо реалан сценарио. На VPS-у са 4 језгра и 8 GB RAM-а ради неколико WordPress веб страница. Корисници пријављују да се сајт успорава и да повремено добијају 502 грешке. Када се отвори терминал и покрене htop, просечна оптерећеност је 12, сви CPU језгри су оптерећени, а на врху се види много php-fpm процеса истог корисника.

Филтрира се корисничко име помоћу F4. Записује се PID процеса који троши CPU; у ps -fp PID излазу видимо php-fpm радника; lsof -p PID показује да постоји приступ до /home/site/public_html/wp-content/plugins/example-importer/import.php датотеке. Када се прегледа access log, у истом минуту видимо захтев од администратора који покреће ту датотеку, а затим се понављају AJAX позиви.

Решење је да се заустави процес увоза, угаси заказана функција додатка, подели велики процес увоза и поново подеси PHP max_execution_time границу. Такође, системски cron се користи уместо wp-cron. Као резултат, просечна оптерећеност пада са 12 на 1.8, коришћење CPU се враћа на нормалу, а времена одговора веба се значајно побољшавају. Овај пример показује колико је htop ефикасан не само самостално, већ и у комбиновању са ps, lsof и анализом логова.

Честе Грешке При Користењу htop-а

  • Само затварање највишег процеса без истраживања корена проблема.
  • Сматрање VIRT вредности стварном потрошњом RAM-а.
  • Директно сматрање RAM употребе MySQL-а као проблемом.
  • Користити kill -9 као прву опцију.
  • Оптуживати апликацију или корисника без контроле логова.
  • Тумачење просечне оптерећености без уважавања броја језгара CPU-а.
  • Не испитивање интегритета датотека у случају сумње на безбедносну повреду.

Избегавање ових грешака смањује време прекида и смањује ризик од губитка података узрокованог погрешним интервенцијама. У управљању системом, тачна дијагноза често је вреднија од брзог реаговања.

Често Постављана Питања

Шта ради htop команда на Linux серверу?

Команда htop на Linux серверу у реалном времену приказује информације о процесима, укључујући CPU, RAM, корисника, PID и команде. То вам омогућава да брзо идентификујете скрипте које прекомерно троше CPU или меморију.

Како пронаћи скрипту која троши CPU уз htop?

Сортирајте процесе на htop екрану по CPU% колони, запишите PID и USER информације процеса који се дуго налази на врху. Затим потврдите пут до датотеке и шта се покреће помоћу ps -fp PID и lsof -p PID команди.

Када анализирам RAM, да ли треба да гледам MEM% или VIRT?

При анализи RAM, MEM% и посебно RES вредност су значајнији. VIRT показује количину резервисане виртуелне меморије и не значи увек физичку потрошњу RAM-а.

Да ли је исправно одмах затворити процес са kill -9?

Обично није. Прво је безбедније документовати шта процес ради, проверити пут до датотеке и испробати стандардну kill PID команду. kill -9 треба користити само као последњу опцију ако процес не реагује и озбиљно нарушава здравље сервера.

Да ли висока потрошња CPU у htop-у увек указује на напад?

Не. Резервне копије, увоз, креирање кеша или интензиван саобраћај такође могу повећати потрошњу CPU. Међутим, необични називи датотека, скрипте које се покрећу из /tmp или uploads и процеси са непознатим корисницима изазивају сумњу на безбедност.

Укратко, htop команда на Linux серверу је брза, практична и ефикасна полазна тачка за проналажење скрипти које троше CPU и RAM. За најтачније резултате, податке из htop-а је потребно комбиновати са анализом PID-а, lsof излазом, провером cron-а и прегледом логова. Ако се проблеми са ресурсима редовно понављају, потребно је размотрити и оптимизацију софтвера и капацитет инфраструктуре; уколико је потребно, упоредите хостинг, VPS и SSL решења без притиска на продају код Hostragons-а и изаберите структуру која најбоље одговара вашем пројекту.

Поделите овај чланак:

Hostragons тим

Ажурирани водичи нашег стручног тима о хостингу, серверима и доменима. Хајде да заједно пронађемо право решење за ваш пројекат.

Контактирајте нас