Operativsystemer

Finne CPU- og RAM-krevende skript med "htop" på Linux-servere

  • 15 min lesetid
  • Hostragons-teamet
Finne CPU- og RAM-krevende skript med "htop" på Linux-servere

På en Linux-server er "htop" et av de mest praktiske overvåkningsverktøyene for å finne skript som bruker for mye CPU og RAM i sanntid. Ved å se på kolonnene CPU%, MEM%, PID, USER, TIME+ og COMMAND i htop-vinduet, kan du identifisere hvilke PHP, Python, Node.js, cron, database eller systemprosesser som belaster serveren; deretter kan du trygt sjekke prosessens eier, filbane og formål før du griper inn.

Uansett om du har delt hosting, VPS, VDS eller dedikert server, kommer en stor del av plutselige tregheter fra skript som kjører uten kontroll. For eksempel kan en defekt WordPress-plugin, en PHP-fil som går inn i en uendelig løkke, en tung cron-jobb, en ikke-optimalisert databaseforespørsel eller en kompromittert webfil få CPU-bruken til å nærme seg 100% på minutter. Når RAM-forbruket øker, kan tjenester fryse, MySQL-tilkoblinger falle, nettsteder kan gi 503-feil, eller Linux-kjernen kan terminere noen prosesser med OOM Killer.

I denne guiden vil vi gå trinnvis gjennom hvordan du installerer htop, hvordan du leser skjermen, hvordan du skiller mellom skript som bruker CPU og RAM, hvordan du finner filbanen via PID, og hvordan du trygt kan gripe inn i prosesser. Vi vil også ta for oss sikkerhetssuspekte forhold, kontroll av cron-jobber, logganalyse og praktiske optimaliseringstips for å unngå gjentatte problemer. Hvis du ofte opplever ressursbegrensningsproblemer på serveren din, kan du også se nærmere på VPS-serverpakker og Høyytelses web hosting for å vurdere valg av infrastruktur.

Hva er htop, og hvorfor er det mer nyttig enn top-kommandoen?

htop er et terminalverktøy som brukes til å interaktivt overvåke prosesser som kjører på Linux-systemer. Det ligner på den klassiske top-kommandoen, men har et mer lesbart grensesnitt, fargerike ressursindikatorer, enkel sortering, søk, filtrering og prosesshåndteringsfunksjoner. Derfor er htop et av de første verktøyene de fleste systemadministratorer ser på når de raskt skal diagnostisere problemer på en live-server.

Med htop kan du se følgende informasjon i sanntid:

  • CPU-bruken for hver prosess
  • RAM-bruken for hver prosess og mengden minne
  • PID-nummeret til prosessen
  • Brukeren som kjører prosessen
  • Kommandolinjen eller skriptnavnet
  • Kjøringstid og prioriteringsverdi
  • Last gjennomsnitt, total RAM, swap og CPU-kjernebruk

Spesielt i et hostingmiljø, hvor flere nettsteder, brukere eller tjenester kjører på samme server, er det ikke nok å bare se på den totale ressursbruken. Det er nødvendig å finne ut hvilken bruker, nettsted, cron-jobb eller skriptfil problemet tilhører. htop-kommandoen på Linux-serveren gir en rask første diagnose på dette punktet.

Installasjon av htop: Kommandoer etter distribusjon

Mange moderne Linux-distribusjoner kan ha htop som et ikke-standardverktøy. Hvis du har root- eller sudo-rettigheter, kan du installere det på noen sekunder. Før installasjonen er det lurt å oppdatere pakkelisten, spesielt på nyinstallert servere, for å redusere sjansen for feil.

Installasjon av htop på Ubuntu og Debian-servere

På en server basert på Ubuntu eller Debian kan følgende kommandoer brukes:

sudo apt update

sudo apt install htop -y

Etter installasjonen kan du starte verktøyet ved å skrive htop. Hvis du ikke har sudo-rettigheter, må du kanskje be om støtte fra hosting-leverandøren din. Hvis du bruker en administrert VPS, har du vanligvis root-tilgang.

Installasjon på AlmaLinux, Rocky Linux, CentOS og RHEL

Pakkebehandleren på RHEL-baserte systemer kan være dnf eller yum avhengig av versjonen:

sudo dnf install htop -y

På eldre CentOS-versjoner kan EPEL-repoet være nødvendig:

sudo yum install epel-release -y

sudo yum install htop -y

Hvis installasjonen er vellykket, åpnes et fargerikt overvåkningsvindu når du skriver htop i terminalen. Hvis du er ny til serveradministrasjon, kan innholdet i Linux kommandoer guide også gi en praktisk start.

Lesing av htop-skjermen: Hva betyr de ulike kolonnene?

Når htop åpnes, vises CPU-kjerner, RAM, swap, antall oppgaver, antall tråder, last gjennomsnitt og oppetid øverst på skjermen. I den nedre delen listes de kjørende prosessene. De mest brukte områdene i feildiagnosen er som følger.

Lesing av htop-skjermen: Hva betyr de ulike kolonnene?
Kolonne Betydning Når bør man være mistenksom?
PID Den unike identifikasjonsnummeret til prosessen. Er nødvendig for å undersøke filbaner og tilkoblinger.
USER Linux-brukeren som kjører prosessen. Hvis en prosess kjører under en uventet bruker, bør dette sjekkes.
CPU% Den nåværende CPU-bruken til prosessen. Prosesser som forblir mellom 80-100% over lengre tid bør undersøkes.
MEM% Andelen RAM som prosessen bruker. Hvis et enkelt skript bruker mer enn 20% RAM, er det risikabelt.
TIME+ Total CPU-tid brukt av prosessen. Viser prosesser som har brukt ressurser over lengre tid, ikke bare kortvarig.
COMMAND Informasjon om kjørende kommando, tjeneste eller skript. Filbane må søkes i prosesser som php, python, node, perl, bash, java, osv.

Det er viktig å merke seg at en kortvarig CPU-spike ikke alltid betyr at det er et problem. For eksempel kan CPU-bruken midlertidig øke under sikkerhetskopiering, bildegjengivelse, opprydning av cache eller ved høy trafikk. Problemet oppstår når den samme prosessen bruker høy CPU eller RAM over flere minutter, når last gjennomsnittet overstiger antall kjerner, og når webtjenester slutter å svare.

Finne CPU-krevende skript med htop

For å finne skript som bruker for mye CPU, kan du velge sorteringsfeltet med F6-tasten mens du er i htop-vinduet, eller sortere etter CPU%-kolonnen. I noen terminaler kan det være tilstrekkelig å klikke på CPU%-overskriften hvis musestøtte er aktivert. Prosessene som vises øverst er de som for øyeblikket bruker mest CPU.

Trinn 1: Sorter etter CPU%-kolonnen

Mens htop kjører, sorter prosessene etter CPU-bruk. Hvis en av prosessene, som php-fpm, php, python3, node, java, mysqld eller bash, stadig holder seg høyt oppe, bør du notere deg denne prosessen. På en enkeltkjerners bruk kan 100% se ut som en normal grense, mens på flerprosessorsystemer kan en prosess vise verdier på 200% eller 400%. Dette betyr at prosessen bruker flere kjerner.

Trinn 2: Noter PID- og USER-informasjonen

Noter deg PID-nummeret og USER-informasjonen til den mistenkelige prosessen. Hvis for eksempel PID er 24819, USER er siteuser og COMMAND-feltet viser php /home/siteuser/public_html/wp-cron.php, er det stor sjanse for at problemet er relatert til cron-jobb eller WordPress-mekanismen på det aktuelle nettstedet. Hvis COMMAND-feltet er veldig kort, kan du aktivere visning av hele kommandolinjen i htop-innstillingene eller bruke ps-kommandoen for å få mer detaljert informasjon.

Trinn 3: Se den faktiske kommandoen til prosessen

For å se den detaljerte kommandolinjen for prosessen, kan følgende kommando brukes:

ps -fp PID

Eksempel på bruk:

ps -fp 24819

Utdataene viser vanligvis hvilken fil skriptet kjøres fra. Hvis kommandoen ser slik ut: php /home/kullanici/public_html/index.php, kan det være en webforespørsel som er forårsaket av trafikk. Hvis det viser php /home/kullanici/public_html/wp-content/plugins/bilinmeyen-eklenti/task.php, kan det være et plugin-relatert problem.

Trinn 4: Kontroller filbanen og åpne filer

Å se hvilke filer en prosess bruker, kan være svært verdifullt med lsof-verktøyet:

lsof -p PID

Denne kommandoen viser filene, bibliotekene, loggene og nettverkstilkoblingene som prosessen har åpne. I webhosting-miljøer kan denne utdataen hjelpe deg med å forstå hvilken nettstedkatalog som er aktiv. For eksempel, hvis du ser en merkelig navngitt PHP-fil som kjører i /home/example/public_html/wp-content/uploads, kan dette være et tegn på et sikkerhetsbrudd. I slike tilfeller er det ikke nok å bare terminere prosessen; det må også utføres filrensing, passordendringer, pluginoppdateringer og sikkerhetsskanninger. For SSL- og sikkerhetskonfigurasjoner kan løsninger for SSL-sertifikat også vurderes.

Finne RAM-krevende skript med htop

RAM-problemer kan være mer subtile enn CPU-problemer. Når CPU-bruken øker, opplever man vanligvis en kortvarig treghet; når RAM er tomt, kan tjenester lukkes uventet, swap kan brukes mye, og forsinkelser kan oppstå på serveren generelt. Du kan liste opp prosessene som bruker mest minne ved å sortere etter MEM%-kolonnen i htop-skjermen.

Forstå forholdet mellom MEM%, RES og Swap

htop viser som standard MEM%-forholdet. I noen konfigurasjoner kan kolonnene VIRT, RES og SHR også vises. Når du analyserer RAM, er RES-verdien spesielt viktig; fordi den representerer det faktiske minneområdet prosessen bruker i fysisk RAM. VIRT-verdien betyr ikke alltid faktisk RAM-bruk, så den kan være misvisende alene.

For eksempel er det ikke normalt at en enkelt PHP-prosess bruker 900 MB RES på en VPS med 4 GB RAM. På samme måte kan en Node.js-applikasjon som går fra 200 MB til 1,5 GB over tid indikere en minnelekkasje. Høy RAM-bruk på MySQL eller MariaDB kan noen ganger være normal cache-adferd; her må forespørselsprestasjoner, bufferinnstillinger og total systemminne vurderes sammen.

Typiske årsaker til RAM-forbrukende skript

  • PHP, Python eller Node.js-koder som går inn i uendelige løkker
  • Store CSV-, XML- eller JSON-filer som lastes inn i minnet på en gang
  • Ikke-optimaliserte WordPress-plugins og temafunksjoner
  • Bildebehandling, PDF-generering eller videokonvertering
  • Gjentatte tunge forespørseler på grunn av utilstrekkelig caching
  • Bot-trafikk eller angrep som får det samme skriptet til å kjøre mange ganger
  • Langvarige bakgrunnstjenester med minnelekkasje

I slike saker gir det bare midlertidig lettelse å avslutte prosessen med kill-kommandoen. For en varig løsning må man analysere hva skriptet gjør, hvilke innganger det utløses med, og hvorfor det ikke frigjør minnet.

Søking, filtrering og trevisning i htop

Hvis det kjører hundrevis av prosesser på serveren, kan det bli vanskelig å søke manuelt gjennom listen. htop tilbyr nyttige snarveier for dette. Du kan søke med F3, bruke F4 for å filtrere, og F5 for å bytte til trevisning. Trevisningen er spesielt viktig for å se forholdet mellom foreldre og barn. For eksempel kan du tydeligere se php-fpm-barneprosesser som kjører under nginx eller Apache, skripter som utløses av cron, eller Node.js-tjenester som er styrt av supervisor.

Praktiske filtreringseksempler

  • Skriv php for å vise bare PHP-prosesser.
  • Skriv python for å filtrere ut Python-skript.
  • Skriv wp-cron for å kontrollere WordPress cron-adferd.
  • Skriv node for å undersøke Node.js-applikasjoner.
  • Filtrer etter brukernavnet for å se prosessene til en enkelt hostingkonto.

Dessa filtrene kan spare tid, spesielt på servere med mange brukere. For eksempel, hvis det hostes 30 forskjellige nettsteder på samme server, kan USER-kolonnen og kommandobahn sammen undersøkes for raskt å forstå hvilken konto problemet stammer fra. Hvis du ønsker å forenkle administrasjonsdelen av domene-baserte prosjekter, kan du se på Domenesjekk og registrering.

Sikker intervensjonsplan for mistenkelig PID

Når du finner en ressurskrevende prosess, kan det være fristende å umiddelbart bruke kill -9. Men denne tilnærmingen kan føre til datatap, ufullstendige skrivinger eller tjenesteinkonsistens. Det er viktig å følge en tryggere plan.

1. Dokumenter prosessen

Først noterer du PID, USER, COMMAND, CPU%, MEM% og tid. Ta et skjermbilde av htop-skjermen hvis mulig. Disse registrene gjør det lettere å sammenligne ved gjentatte problemer. Spesielt i byrå-, e-handels- eller bedriftsprosjekter kan disse dataene være nyttige når man gir tekniske forklaringer til kunden.

2. Verifiser filbanen til prosessen

Bekreft filbanen med ps -fp PID og lsof -p PID-utsagn. Hvis filen ligger i webrotkatalogen, bør du se gjennom loggene for den aktuelle applikasjonen. For WordPress gir wp-content/debug.log, webserverens access log og error log, og PHP-FPMs slow log viktige ledetråder.

3. Prøv først en skånsom avslutning

Hvis prosessen virkelig er ukontrollert, send først standard avslutningssignal:

kill PID

Vent noen sekunder og sjekk om prosessen har lukket seg i htop-skjermen. Hvis den ikke lukker seg og alvorlig påvirker systemets helse, kan du som en siste utvei bruke:

kill -9 PID

kill -9-signalet avslutter prosessen uten å gi den mulighet til å rydde opp. Derfor bør det brukes med forsiktighet for databaseoperasjoner, filskrivingsprosesser eller sikkerhetskopieringsoppgaver.

4. Finn ut hva som utløser det hvis det starter igjen

Hvis en prosess begynner på nytt sekunder etter at den er stengt, kan det være en cron-jobb, systemd-tjeneste, supervisor, webforespørsel eller bot-trafikk som står bak. For cron-logger, sjekk crontab -l, for systemtjenester, systemctl status servicename, og for webtrafikk, undersøk access-loggen. Hvis problemet er relatert til WordPress wp-cron, må den faktiske cron-konfigurasjonen og cachepolitikken vurderes på nytt.

Sammensmelting av htop-funn med logger

Sammensmelting av htop-funn med logger

htop viser deg hva som bruker ressurser; logger lar deg forstå hvorfor det brukes. Når disse to datakildene ikke brukes sammen, forblir diagnosen ufullstendig. For eksempel kan php-fpm-prosessen vise 180% CPU-bruk i htop; men uten access-logg kan du ikke se hvilken URL eller bot som utløste denne prosessen.

Eksempler på logger som kan kontrolleres inkluderer:

  • Webserverens access-logg: Viser hvilke URL-er som har hatt mange forespørseler.
  • Webserverens error-logg: Viser PHP-feil, filrettigheter og 500-feil.
  • PHP-FPM slow-logg: Viser sakte kjørende PHP-filer og funksjoner.
  • MySQL slow query-logg: Identifiserer tunge SQL-forespørseler.
  • Auth-logg eller secure-logg: Viser mistenkelige påloggingsforsøk.
  • Cron-logg: Viser når planlagte oppgaver kjører.

For eksempel, hvis en høy CPU-forbrukende PID også har tusenvis av forespørseler til /wp-admin/admin-ajax.php i access-loggen samtidig, kan problemet være forårsaket av en plugin, bot-trafikk eller dårlig designet AJAX-prosess. I slike tilfeller bør WAF, hastighetsbegrensning, cache og pluginoptimalisering vurderes sammen. For å ta et bredere perspektiv på websideytelse, kan innholdet i webside hastighetsoptimalisering være nyttig.

Hvordan skille mellom normal belastning og problematisk belastning?

Ikke all høy ressursbruk betyr krise. Serverens maskinvare, trafikknivå, applikasjonstype og vedlikeholdsoppgaver må vurderes. For en VPS med to kjerner er det alvorlig flaskehals når last gjennomsnittet forblir på 6-8 over lengre tid. På en dedikert server med 16 kjerner kan samme verdi være normal. Derfor må last gjennomsnittet tolkes i lys av antall kjerner.

Hvordan skille mellom normal belastning og problematisk belastning?
Observasjon Mulig tilstand Anbefalt handling
CPU kortvarig 100%, deretter tilbake til normal Midler til intens prosess Bekreft med logger, ikke grip inn umiddelbart.
Samme PID bruker høy CPU i flere minutter Uendelig løkke eller tung prosess Finn PID-banen, undersøk skriptet.
RAM øker kontinuerlig og synker ikke Minnelekkasje Sjekk tjenestekoden og worker-innstillingene.
Swap-bruken øker raskt Fysisk RAM utilstrekkelig Planlegg RAM-optimalisering eller pakkeoppgradering.
Mange av de samme PHP-prosessene Bot-trafikk eller høy forespørsel Kontroller access-logg, brannmur og cache.

Denne sammenligningen hjelper deg med å skille unødig panikk fra ekte ytelseskriser. Spesielt i e-handelsnettsteder kan kampanjeperioder, betalingsintegrasjoner og lageroppdateringer skape midlertidige ressursøkninger. Men hvis denne økningen påvirker brukeropplevelsen, bør applikasjonsoptimalisering og serverkapasitet vurderes sammen.

Sikkerhetssuspekte: Kan ressurskrevende skript være skadelige?

CPU- eller RAM-krevende skript er ikke alltid en uskyldig feil. På kompromitterte nettsteder kan angripere kjøre skript for spam, kryptovaluta-mining, proxy-trafikk, DDoS-bot eller bakdørsskript. Merkelig kommandoer som kjører under uventede brukere, tilfeldige filnavn, binære filer som kjører fra /tmp-katalogen, eller PHP-filer som kjører i public_html/uploads, bør tas på alvor fra et sikkerhetsmessig perspektiv.

Mistenkelige tegn

  • Meningsløse eller tilfeldige tegn i COMMAND-feltet
  • Filer som kjører fra /tmp, /dev/shm eller uploads-katalogen
  • Prosesser med perl, python eller bash som normalt ikke skulle være der
  • Prosesser som lager høy utgående nettverksforbindelse
  • Den samme brukeren starter mange prosesser på kort tid
  • Nylige uautoriserte endringer i webfilene

I slike tilfeller bør du ta skjermbilder av kommandoutdataene som bevis før du stenger prosessen. Sjekk deretter filrettighetene, isoler skadelige filer, endre alle panel- og CMS-passord, oppdater kjernetema- og plugin-filer, og kjør en sikkerhetsskanning. I tillegg vil det å bruke tofaktorautentisering på administrasjonspaneler og fjerne unødvendige skrivetillatelser redusere risikoen på lang sikt.

Beste praksiser for å forhindre gjentakelse av ytelsesproblemer

Å finne problemet med htop er viktig; men den virkelige verdien ligger i å hindre at det samme problemet skjer igjen. Følgende tiltak kan betydelig redusere CPU- og RAM-relaterte avbrudd på Linux-servere.

  • Justere PHP memory_limit, max_execution_time og pm.max_children verdier basert på serverkapasitet.
  • Bruk cache-mekanismer for WordPress, Joomla eller spesialprogrammer.
  • Fjern unødvendige plugins, temaer og moduler.
  • Optimaliser tunge forespørseler med MySQL slow query-logg.
  • Ikke samle cron-jobber på samme minutt; kjør dem med intervaller.
  • Implementer hastighetsbegrensning, robots.txt og brannmurregler for bot-trafikk.
  • Rotere applikasjonslogger regelmessig; overvåk disk- og RAM-påvirkningen av store loggfiler.
  • Overvåk servermetrikker ikke bare i krisesituasjoner, men jevnlig.

Hvis ressursbruken forblir høy til tross for optimalisering, kan problemet ikke bare ligge på programvaresiden. Trafikken kan ha økt, applikasjonen kan ha vokst, eller den nåværende hostingpakken kan være utilstrekkelig. I så fall kan en skalerbar VPS, mer RAM, raskere NVMe-disk eller en isolert ressursserver bli fornuftig. For behovsanalyse kan Hosting-pakker og løsninger for bedrift server vurderes for å sammenligne alternativer.

Eksempelscenario: CPU-peak på WordPress-nettsted

La oss gå gjennom et realistisk scenario. På en VPS med 4 kjerner og 8 GB RAM kjører flere WordPress-nettsteder. Brukerne rapporterer at nettstedet er tregt og av og til gir 502-feil. Når terminalen åpner htop, er last gjennomsnittet på 12, alle CPU-kjernene er fulle, og mange php-fpm-prosesser tilhører samme bruker.

Ved å bruke F4 filtreres brukernavnet. PID-en til prosessen som bruker mest CPU noteres. ps -fp PID-utsagn viser at det er en php-fpm worker; lsof -p PID avslører tilgang til /home/site/public_html/wp-content/plugins/example-importer/import.php. Når access-loggen undersøkes, sees det forespørsel fra administratoren som utløser denne filen, etterfulgt av gjentatte AJAX-kall.

Som løsning stoppes importprosessen, den planlagte oppgaven fra plugin deaktiveres, store dataimportprosesser deles opp, og PHP max_execution_time-grensen justeres. I tillegg brukes system cron i stedet for wp-cron. Som et resultat faller last gjennomsnittet fra 12 til 1,8, CPU-bruken går tilbake til normal, og webresponsene forbedres merkbart. Dette eksemplet viser hvor effektivt htop kan være når det brukes sammen med ps, lsof og logganalyse.

Vanlige feil ved bruk av htop

  • Å bare lukke den øverste prosessen uten å undersøke roten til problemet.
  • Å tro at VIRT-verdien er det samme som faktisk RAM-bruk.
  • Å anta at MySQLs cachebruken av RAM er et problem uten videre.
  • Å bruke kill -9 som førstevalg.
  • Å anklage applikasjonen eller brukeren uten å sjekke logger.
  • Å tolke last gjennomsnittet uten å ta hensyn til antall CPU-kjerner.
  • Ikke sjekke filintegriteten ved mistanke om sikkerhetsbrudd.

Å unngå disse feilene reduserer både nedetid og risikoen for datatap på grunn av feil inngrep. Riktig diagnose i systemadministrasjon er ofte mer verdifullt enn raske tiltak.

Ofte stilte spørsmål

Hva brukes htop-kommandoen til på en Linux-server?

htop-kommandoen på en Linux-server viser sanntidsinformasjon om kjørende prosesser, inkludert CPU, RAM, bruker, PID og kommandoinformasjon. Dette gir deg mulighet til raskt å identifisere skript som bruker for mye ressurser.

Hvordan finner jeg CPU-krevende skript med htop?

Sorter prosessene i htop-skjermen etter CPU%-kolonnen, og noter PID- og USER-informasjonen til prosessen som forblir høy over lengre tid. Bekreft deretter skriptets filbane og hva det kjører med ps -fp PID og lsof -p PID kommandoene.

Skal jeg se på MEM% eller VIRT når jeg analyserer RAM-bruk?

Når du analyserer RAM, er MEM% og spesielt RES-verdien mer meningsfulle. VIRT viser mengden allokert virtuell minne, og betyr ikke alltid faktisk RAM-bruk.

Er det riktig å umiddelbart bruke kill -9 på en ressurskrevende prosess?

Generelt nei. Det er tryggere å dokumentere hva prosessen er, kontrollere filbanen, og først prøve standard kill PID-kommandoen. kill -9 bør bare brukes som en siste utvei når prosessen ikke lukker seg og alvorlig påvirker serverens helse.

Er høy CPU-bruk alltid et tegn på et angrep i htop?

Nei. Backup, import, caching eller høy trafikk kan også øke CPU-bruken. Men uventede filnavn, skript som kjører fra /tmp eller uploads, og prosesser under uventede brukere gir grunn til sikkerhetsmistanker.

Oppsummert er htop-kommandoen på en Linux-server et raskt, praktisk og effektivt verktøy for å finne skript som bruker CPU og RAM. For mest nøyaktige resultater bør htop-dataene kombineres med PID-analyse, lsof-utdata, cron-kontroll og logganalyse. Hvis ressursproblemer ofte gjentar seg på serveren din, bør både programvareoptimalisering og infrastrukturkapasitet vurderes; ved behov kan du sammenligne hostings-, VPS- og SSL-løsningene fra Hostragons uten salgspress for å finne den mest passende strukturen for prosjektet ditt.

Del dette innlegget:

Hostragons-teamet

Oppdaterte guider fra vårt team av eksperter innen hosting, servere og domenenavn. La oss finne den rette løsningen for prosjektet ditt sammen.

Kontakt oss