Käyttöjärjestelmät

Linux-palvelimella htop-komennolla CPU:ta ja RAM-muistia kuormittavien skriptien tunnistaminen

  • 10 minuuttia lukemista
  • Hostragons-tiimi
Linux-palvelimella htop-komennolla CPU:ta ja RAM-muistia kuormittavien skriptien tunnistaminen

Linux-palvelimella htop-komento on yksi kätevimmistä ja nopeimmista työkaluista prosessien ja skriptien reaaliaikaiseen seurantaan – erityisesti silloin, kun jokin PHP-, Python-, Node.js-, cron-, tietokanta- tai järjestelmäprosessi syö liikaa CPU:ta ja RAM-muistia. htop-näkymässä sarakkeet kuten CPU%, MEM%, PID, USER, TIME+ ja COMMAND auttavat tunnistamaan, mikä prosessi aiheuttaa palvelimen hidastumisen. Kun ongelmallinen prosessi löytyy, sen omistaja, tiedostopolku ja tarkoitus voidaan tarkistaa ennen turvallista puuttumista tilanteeseen.

Ylläpiditpä sitten jaettua webhotellia, VPS:ää, VDS:ää tai dedikoitua palvelinta, äkilliset hidastelut johtuvat usein hallitsemattomasti pyörivistä skripteistä. Esimerkiksi virheellinen WordPress-lisäosa, loputtomaan silmukkaan juuttunut PHP-tiedosto, kuormittava cron-ajastettu tehtävä, huonosti optimoitu tietokantakysely tai murrettu web-skripti voivat nostaa CPU-käytön hetkessä lähes 100 prosenttiin. RAM-muistin täyttyessä palvelut voivat jumittua, MySQL-yhteydet katketa, sivustot näyttää 503-virheitä tai Linuxin OOM Killer tappaa prosesseja automaattisesti.

Tässä oppaassa käydään vaihe vaiheelta läpi htop:n asennus, näkymän tulkinta, CPU:n ja RAM:n syöjien tunnistaminen, PID:n kautta tiedostopolun löytäminen sekä turvallinen prosessin hallinta. Mukana myös vinkkejä turvallisuusepäilyjen, cron-ajastusten, lokianalyysin ja optimoinnin osalta, jotta vastaavat ongelmat eivät toistuisi. Jos palvelimellasi on toistuvia resurssipulaongelmia, kannattaa tutustua VPS palvelupaketit ja Korkean suorituskyvyn verkkohosting -sivuihin sopivan ratkaisun löytämiseksi.

Mikä on htop ja miksi se on kätevämpi kuin top?

htop on interaktiivinen prosessien seurantatyökalu Linux-järjestelmille. Se muistuttaa perinteistä top-komentoa, mutta tarjoaa selkeämmän, värikoodatun käyttöliittymän, helpon järjestelyn, haun, suodatuksen ja prosessien hallinnan. Siksi htop on monien ylläpitäjien ensisijainen työkalu nopeaan diagnostiikkaan live-palvelimella.

htop:n avulla näet esimerkiksi:

  • Kunkin prosessin ajankohtaisen CPU-käyttöasteen
  • Kunkin prosessin RAM-käytön prosentteina ja megatavuina
  • Prosessin PID-numeron
  • Käyttäjän, joka prosessin käynnisti
  • Komentorivin/tiedoston nimen
  • Käyntiajan ja prioriteetin
  • Load average, kokonais-RAM, swap ja CPU-ytimien kuormituksen

Webhosting-ympäristössä pelkkä kokonaisresurssien kulutus ei riitä – on selvitettävä, mikä käyttäjä, sivusto, cron-tehtävä tai skripti on syypää. htop-komento Linux-palvelimella antaa nopean ensitiedon ongelman lähteestä.

htop-asennus: Komennot jakelusta riippuen

Monissa Linux-jakeluissa htop ei ole valmiina. Root- tai sudo-oikeuksilla asennus käy nopeasti. Ennen asennusta on hyvä päivittää pakettilista – erityisesti tuoreilla palvelimilla virheiden välttämiseksi.

htop-asennus Ubuntu- ja Debian-palvelimilla

Ubuntu- tai Debian-pohjaisilla palvelimilla käytä:

sudo apt update

sudo apt install htop -y

Asennuksen jälkeen käynnistä htop kirjoittamalla htop. Jos sinulla ei ole sudo-oikeuksia, tarvitset hosting-palveluntarjoajan apua. Hallittavalla VPS:llä root-tunnus yleensä kuuluu sinulle.

AlmaLinux, Rocky Linux, CentOS ja RHEL-asennus

RHEL-pohjaisissa järjestelmissä paketinhallinta vaihtelee:

sudo dnf install htop -y

Vanhoissa CentOS-versioissa tarvitaan EPEL-repositorio:

sudo yum install epel-release -y

sudo yum install htop -y

Kun asennus on valmis, kirjoita htop ja värikäs prosessiseuranta avautuu. Jos palvelinadminointi on uutta, Linux-komentojen opas on hyvä aloitus Linux-komentojen harjoitteluun.

htop-näkymän tulkinta: Mitä sarakkeet tarkoittavat?

htop:n yläosassa näkyy CPU-ytimet, RAM, swap, tehtävien ja säikeiden määrä, load average sekä uptime. Alhaalla listataan kaikki aktiiviset prosessit. Ongelmatilanteissa tärkeimmät sarakkeet ovat:

htop-näkymän tulkinta: Mitä sarakkeet tarkoittavat?
Sarake Tarkoitus Milloin huolestua?
PID Prosessin yksilöllinen tunniste. Tiedostopolun ja yhteyksien tutkimiseen.
USER Käyttäjä, joka käynnisti prosessin. Jos odottamaton käyttäjä pyörittää prosessia.
CPU% Prosessin hetkellinen CPU-kuormitus. Jos prosessi pysyy yli 80-100% pitkään.
MEM% Prosessin osuus kokonais-RAM:sta. Yksi skripti yli 20% RAM:sta on riski.
TIME+ Käytetty kokonais-CPU-aika. Pitkään resursseja kuluttavat prosessit.
COMMAND Käynnissä oleva komento, palvelu tai skripti. php, python, node, bash, java ym. – tiedostopolku tarkistettava.

Tärkeää: Lyhyt CPU-piikki ei aina ole ongelma. Varaston päivitys, kuvien optimointi, välimuistin tyhjennys tai ruuhkainen liikenne voivat hetkellisesti nostaa CPU:n. Ongelma syntyy, jos sama prosessi kuluttaa resursseja pitkään, load average nousee ydinmäärän yli ja web-palvelut eivät vastaa.

CPU:ta kuormittavien skriptien löytäminen htopilla

Ylikuormittavat skriptit löytyvät htopissa järjestämällä prosessit CPU%-sarakkeen mukaan (F6 tai klikkaus, jos hiirituki). Listan yläosa näyttää eniten CPU:ta kuluttavat prosessit.

Vaihe 1: Järjestä CPU%-sarakkeen mukaan

Jos esimerkiksi php-fpm, php, python3, node, java, mysqld tai bash pysyy listan kärjessä, kannattaa kirjata kyseinen prosessi ylös. Yksiytimisellä palvelimella 100% on maksimi yhdelle prosessille, mutta moniytimisellä arvo voi olla 200% tai 400% – tällöin prosessi käyttää useaa ydintä.

Vaihe 2: Tallenna PID- ja USER-tiedot

Kirjaa epäilyttävän prosessin PID ja USER. Jos PID on vaikkapa 24819, USER siteuser ja COMMAND php /home/siteuser/public_html/wp-cron.php, ongelma liittyy todennäköisesti kyseisen sivuston cron-toimintoihin tai WordPressiin. Jos COMMAND on lyhyt, htop-asetuksista voi laajentaa komentorivin näyttöä tai käyttää ps-komentoa tarkempaan tietoon.

Vaihe 3: Näytä prosessin tarkka komento

Katso tarkempi komento:

ps -fp PID

Esimerkki:

ps -fp 24819

Tulos näyttää yleensä skriptin tiedostopolun. Jos komento on php /home/kayttaja/public_html/index.php, kyseessä on todennäköisesti web-liikenteen aiheuttama pyyntö. Jos taas php /home/kayttaja/public_html/wp-content/plugins/tuntematon-lisäosa/task.php, ongelma voi olla lisäosassa.

Vaihe 4: Tarkista tiedostopolku ja avoimet tiedostot

lsof näyttää, mitä tiedostoja prosessi käyttää:

lsof -p PID

Tämä paljastaa avoimet tiedostot, kirjastot, lokit ja verkkoyhteydet. Webhostingissa näet, minkä sivuston kansio on aktiivinen. Jos esimerkiksi /home/example/public_html/wp-content/uploads -kansiossa pyörii epäilyttävä PHP-tiedosto, kyseessä voi olla tietoturvaloukkaus. Tällöin pelkkä prosessin tappaminen ei riitä – on myös tehtävä tiedostojen puhdistus, salasanan vaihto, lisäosien päivitys ja tietoturvatarkistus. SSL- ja turvallisten yhteyksien asetuksiin löytyy apua SSL-sertifika ratkaisut -sivulta.

RAM-muistia kuluttavien skriptien tunnistaminen htopilla

RAM-ongelmat voivat olla vaikeampia havaita kuin CPU-piikit. CPU:n noustessa hidastuminen tuntuu heti, mutta RAM:n täyttyessä palvelut voivat yllättäen kaatua, swapia käytetään liikaa ja viive lisääntyy. htop:ssa MEM%-sarakkeen mukaan järjestäminen paljastaa eniten muistia käyttävät prosessit.

MEM%, RES ja Swap – mitä kannattaa seurata?

htop näyttää MEM%-arvon. Joissain asetuksissa näkyy myös VIRT, RES ja SHR-sarakkeet. RAM-analyysissä RES on tärkein – se kertoo, paljonko fyysistä muistia prosessi oikeasti käyttää. VIRT voi olla harhaanjohtava, sillä se sisältää varattua, mutta ei käytössä olevaa muistia.

Esimerkiksi VPS:llä, jossa on 4 GB RAM, yksittäisen PHP-prosessin 900 MB RES ei ole normaalia. Node.js-sovelluksen muistinkulutuksen kasvu 200 MB:sta 1,5 GB:hen viittaa mahdolliseen memory leak -ongelmaan. MySQL/MariaDB:n korkea RAM-käyttö voi joskus liittyä normaaliin välimuistin käyttöön – tällöin on tarkistettava kyselyjen tehokkuus, buffer-asetukset ja koko järjestelmän muisti.

Tyypilliset syyt RAM-muistin kulutukseen

  • Loputtomaan silmukkaan jäävät PHP, Python tai Node.js-koodit
  • Suuret CSV, XML tai JSON-tiedostot ladattuna kerralla muistiin
  • Huonosti optimoidut WordPress-lisäosat ja teemat
  • Kuvien käsittely, PDF-tuotanto tai videomuunnos
  • Välimuistin puuttuminen – raskaat kyselyt toistuvat
  • Bot-liikenne tai hyökkäys – sama skripti käynnistyy usein
  • Memory leak pitkiä aikoja pyörivissä taustapalveluissa

Pelkkä kill-komento tuo hetkellisen helpotuksen – pysyvään ratkaisuun tarvitaan skriptin toiminnan, syötteiden ja muistinhallinnan tarkempi analyysi.

htop:n haku, suodatus ja puumainen näkymä

Satojen prosessien joukosta manuaalinen haku on työlästä. htop tarjoaa käteviä pikanäppäimiä: F3 haulle, F4 suodatukselle ja F5 puunäkymälle. Puunäkymä korostaa parent-child-suhteet – esimerkiksi nginx/Apache-alaiset php-fpm child-prosessit, cronista käynnistyvät skriptit tai supervisor-ohjelman hallinnoimat Node.js-palvelut näkyvät selkeämmin.

Käytännön suodatusvinkkejä

  • Kirjoita "php" – näet vain PHP-prosessit.
  • Kirjoita "python" – saat Python-skriptit esiin.
  • Kirjoita "wp-cron" – tarkistat WordPressin cron-toiminnan.
  • Kirjoita "node" – Node.js-käynnistykset löytyvät.
  • Suodata käyttäjän mukaan – näet yhden hosting-tilin prosessit.

Suodatus säästää aikaa erityisesti monen käyttäjän palvelimilla. Jos samalla palvelimella on 30 sivustoa, USER-sarake ja tiedostopolku paljastavat nopeasti, mistä ongelma johtuu. Domain-hallinnan selkeyttämiseksi tutustu myös Domainin tarkistus ja rekisteröinti -sivuun.

Turvallinen toimenpidesuunnitelma epäilyttävälle PID:lle

Kun löydät resurssisyöpön prosessin, voi olla houkuttelevaa ajaa heti kill -9. Tämä voi kuitenkin aiheuttaa datan menetyksen, keskeneräisiä kirjoituksia tai palvelujen epävakautta. Kannattaa edetä suunnitelmallisesti.

1. Dokumentoi prosessi

Kirjaa PID, USER, COMMAND, CPU%, MEM% ja käyntiaika. Ota htop-näytöstä kuvakaappaus. Dokumentointi auttaa vertailemaan toistuvia tapauksia ja selittämään tekniset yksityiskohdat asiakkaalle, jos olet vastuussa useista projekteista.

2. Vahvista tiedostopolku

Käytä ps -fp PID ja lsof -p PID. Jos tiedosto on webin juurihakemistossa, tarkista sovelluksen lokit (WordPress: wp-content/debug.log, webpalvelin: access/error log, PHP-FPM: slow log).

3. Kokeile ensin normaalia lopetusta

Jos prosessi on selvästi hallitsematon, lähetä ensin tavallinen lopetussignaali:

kill PID

Tarkista htop:ssa, sulkeutuiko prosessi. Jos ei, ja palvelimen toiminta kärsii, käytä viimeisenä keinona:

kill -9 PID

kill -9 ei anna prosessille aikaa siivota – käytä sitä varoen etenkin tietokanta- tai tiedostokirjoitusprosesseissa.

4. Jos prosessi käynnistyy heti uudelleen, etsi syy

Jos prosessi käynnistyy uudelleen, syynä voi olla cron, systemd-palvelu, supervisor, web-pyyntö tai botti. Cron-tarkistus: crontab -l; palvelut: systemctl status palvelunnimi; web-liikenne: access log. WordPressin wp-cron-ongelmissa kannattaa tarkastaa cron-asetukset ja välimuistipolitiikka.

htop:n löydökset ja lokien yhdistäminen

htop:n löydökset ja lokien yhdistäminen

htop kertoo mitä syö resursseja – lokit kertovat miksi. Ilman molempia diagnoosi jää vajaaksi. Esimerkiksi htop:ssa php-fpm-prosessi voi käyttää 180% CPU:ta, mutta ilman access logia et tiedä, mikä URL tai botti sen käynnistää.

Tarkistettavia lokityyppejä:

  • Webpalvelimen access log: Näyttää ruuhkaiset URL:t
  • Webpalvelimen error log: PHP-virheet, tiedosto-oikeudet, 500-virheet
  • PHP-FPM slow log: Hitaat PHP-tiedostot/funktiot
  • MySQL slow query log: Raskaat tietokantakyselyt
  • Auth/secure log: Epäilyttävät sisäänkirjautumiset
  • Cron log: Ajastettujen tehtävien ajoajat

Jos htop:ssa suuri CPU-kulutus liittyy PID:hen, ja samaan aikaan access logissa näkyy tuhansia pyyntöjä /wp-admin/admin-ajax.php:lle, syyllinen voi olla lisäosa, botti tai huonosti toteutettu AJAX. Tällöin harkitse WAF:ia, rate limit -sääntöjä, välimuistin ja lisäosien optimointia. Web-sivuston laaja-alaisempaan nopeuden optimointiin katso verkkosivuston nopeuden optimointi.

Miten erottaa normaali ja ongelmallinen kuormitus?

Korkea resurssien käyttö ei aina tarkoita kriisiä. Palvelimen laitteisto, liikennemäärä, sovellustyyppi ja huoltotoimet vaikuttavat. 2-ytimisellä VPS:llä load average 6–8 pitkään on merkki pullonkaulasta. 16-ytimisellä dedikoidulla sama arvo voi olla normaali. Load average tulee aina suhteuttaa ytimien määrään.

Miten erottaa normaali ja ongelmallinen kuormitus?
Havainto Mahdollinen syy Suositeltu toimenpide
CPU lyhyesti 100%, sitten normaali Tilapäinen ruuhka Vahvista lokeista – ei tarvetta välittömään puuttumiseen.
Sama PID pitkään korkealla CPU:lla Loputon silmukka/raskas prosessi Tutki PID:n tiedostopolku ja skripti.
RAM kasvaa eikä laske Memory leak Tarkista palvelun koodi ja työntekijäasetukset.
Swapin käyttö kasvaa nopeasti RAM ei riitä Suunnittele RAM-optimointi tai paketin korotus.
Paljon identtisiä PHP-prosesseja Bot-liikenne tai ruuhka Tarkista access log, palomuuri ja välimuisti.

Tämä vertailu auttaa välttämään turhaa paniikkia ja tunnistamaan todellisen kriisin. Esimerkiksi kauppasivustoilla kampanjat, maksutapahtumat ja varastopäivitykset voivat tilapäisesti lisätä kuormaa. Jos se vaikuttaa käyttäjäkokemukseen, optimointi ja kapasiteetin tarkistus ovat paikallaan.

Voiko resurssisyövä skripti olla haitallinen?

Korkea CPU- tai RAM-kulutus ei aina ole viaton virhe. Murretuilla sivustoilla hyökkääjät voivat ajaa spam-botteja, kryptolouhintaa, proxy-palveluita, DDoS-botteja tai takaoviskriptejä. htop:ssa epäilyttävät prosessit näkyvät odottamattoman käyttäjän alla, outoina komentoina, satunnaisina tiedostoniminä, /tmp-kansiosta tai public_html/uploads-kansiosta pyörivinä PHP-tiedostoina.

Epäilyttävät merkit

  • COMMAND-sarakkeessa merkityksettömät tai satunnaiset tiedostonimet
  • /tmp, /dev/shm tai uploads-kansiosta käynnistetyt tiedostot
  • Perl, python tai bash-prosessit, joita ei pitäisi olla
  • Korkea ulkoisen verkon käyttö
  • Sama käyttäjä käynnistää paljon prosesseja lyhyessä ajassa
  • Web-tiedostoissa tuoreita luvattomia muutoksia

Ennen prosessin lopetusta kannattaa tallentaa todisteet (komentotulosteet). Tarkista tiedosto-oikeudet, eristä haitalliset tiedostot, vaihda kaikki paneeli- ja CMS-salasanat, päivitä lisäosat/teemat ja tee tietoturvatarkistus. Ylläpitäjäpaneeleissa kaksivaiheinen tunnistautuminen ja turhien kirjoitusoikeuksien poisto vähentävät riskiä.

Parhaat käytännöt – miten ehkäistä ongelmien toistuminen?

htop auttaa tunnistamaan ongelman, mutta oikea arvo syntyy, kun samaa vaivaa ei enää tule. Seuraavat toimenpiteet vähentävät CPU- ja RAM-perusteisia katkoja merkittävästi Linux-palvelimilla:

  • Säädä PHP:n memory_limit, max_execution_time ja pm.max_children palvelimen kapasiteetin mukaan.
  • Käytä välimuistia WordPressissä, Joomlassa tai muissa järjestelmissä.
  • Poista tarpeettomat lisäosat, teemat ja moduulit.
  • Optimoi MySQL:n raskaat kyselyt slow query log:n avulla.
  • Älä ajasta kaikkia cron-tehtäviä samaan aikaan – hajauta ajoituksia.
  • Botti/liikenne: rate limit, robots.txt ja palomuurisäännöt käyttöön.
  • Pidä logit hallinnassa – seuraa niiden vaikutusta levyn ja RAM:n käyttöön.
  • Seuraa palvelimen metrikkoja säännöllisesti, ei vain kriisin hetkellä.

Jos optimoinnista huolimatta resurssien kulutus pysyy korkeana, syy voi olla myös palvelinpuolella: liikennemäärä kasvanut, sovellus laajentunut tai hosting-paketti ei riitä. Tällöin skaalautuva VPS, enemmän RAM-muistia, nopeampi NVMe-levy tai eristetty palvelinratkaisu on järkevää. Vertaile vaihtoehtoja Hosting-paketit ja yrityspalvelinratkaisut -sivuilla.

Esimerkkitapaus: WordPress-sivuston CPU-piikki

Kuvitellaan tilanne: VPS-palvelimella (4 ydintä, 8 GB RAM) toimii useita WordPress-sivustoja. Käyttäjät valittavat hitaudesta ja satunnaisista 502-virheistä. htop:ssa load average on 12, kaikki CPU-ytimet täynnä ja kärjessä paljon php-fpm-prosesseja saman käyttäjän alla.

F4:llä suodatetaan käyttäjän mukaan. CPU-kuluttajan PID kirjataan ylös. ps -fp PID näyttää php-fpm workerin; lsof -p PID paljastaa /home/site/public_html/wp-content/plugins/example-importer/import.php -tiedoston. Access logissa näkyy samaan aikaan adminin pyyntö ja toistuvat AJAX-kutsut kyseiseen tiedostoon.

Ratkaisuna import-prosessi pysäytetään, lisäosan ajastettu tehtävä suljetaan, suuri datan tuonti jaetaan pienempiin osiin ja PHP:n max_execution_time-arvo säädetään. Lisäksi wp-cron korvataan järjestelmän cronilla. Lopulta load average laskee 12:sta 1,8:aan, CPU normalisoituu ja sivut vastaavat nopeasti. Tämä osoittaa htop:n tehokkuuden yhdessä ps-, lsof- ja lokianalyysin kanssa.

Yleisiä htopin käytön virheitä

  • Tapetaan vain ylin prosessi tutkimatta syytä.
  • Luullaan VIRT-arvoa oikeaksi RAM-kulutukseksi.
  • Pidetään MySQL:n välimuistin RAM-käyttöä automaattisesti ongelmana.
  • kill -9 käytetään ensisijaisesti.
  • Syytetään sovellusta/käyttäjää ilman lokien tarkistusta.
  • Tulkitaan load average ilman CPU-ytimien määrän huomiointia.
  • Ei tarkisteta tiedostojen eheyttä tietoturvaepäilyissä.

Välttämällä näitä virheitä lyhennät katkojen kestoa ja pienennät datan menetyksen riskiä. Oikea diagnoosi on usein arvokkaampaa kuin nopea puuttuminen.

Usein kysytyt kysymykset

Mihin htop-komentoa käytetään Linux-palvelimella?

htop näyttää reaaliaikaisesti prosessien CPU-, RAM-, käyttäjä-, PID- ja komentotiedot. Näin tunnistat nopeasti skriptit, jotka kuormittavat palvelinta liikaa.

Kuinka löydän CPU:ta kuormittavan skriptin htopilla?

Järjestä prosessit CPU%-sarakkeen mukaan, kirjaa pitkään kärjessä pysyvän prosessin PID ja USER. Käytä ps -fp PID ja lsof -p PID selvittääksesi tiedostopolun ja skriptin tarkemmin.

RAM-kulutuksessa – MEM% vai VIRT?

RAM-analyysissä MEM% ja erityisesti RES-arvo ovat tärkeämpiä. VIRT kertoo varatusta virtuaalimuistista, mutta ei aina oikeasta RAM-käytöstä.

Kannattaako kuormittava prosessi tappaa heti kill -9:llä?

Ei yleensä. Dokumentoi ensin prosessi, tarkista tiedostopolku, kokeile kill PID. kill -9 on viimeinen vaihtoehto, jos prosessi ei muuten sulkeudu ja palvelimen toiminta on uhattuna.

Onko korkea CPU-käyttö htop:ssa aina merkki hyökkäyksestä?

Ei. Backupit, importit, välimuistin rakennus ja ruuhka voivat nostaa CPU:n. Jos prosessit pyörivät outojen tiedostonimien kautta, /tmp- tai uploads-kansiosta tai odottamattoman käyttäjän alla, turvallisuustarkistus on tarpeen.

Yhteenvetona: htop-komento Linux-palvelimella on nopea ja tehokas tapa tunnistaa CPU:ta ja RAM-muistia kuormittavat skriptit. Parhaat tulokset saat yhdistämällä htop:n tiedot PID-, lsof-, cron- ja lokianalyysiin. Jos resurssiongelmat toistuvat, arvioi sekä ohjelmiston optimointi että palvelininfrastruktuuri – ja vertaile Hostragonsin hosting-, VPS- ja SSL-ratkaisut ilman myyntipainetta, löytääksesi parhaan ratkaisun projektiisi.

Jaa tämä artikkeli:

Hostragons-tiimi

Asiantuntijatiimimme ajantasaiset oppaat webhotellista, palvelimista ja verkkotunnuksista. Löydätään yhdessä projektiisi sopiva ratkaisu.

Ota meihin yhteyttä