kuten missä tahansa muussa käyttöjärjestelmässä, GNU/Linux on toteuttanut muistinhallinnan tehokkaasti ja jopa enemmän. Mutta jos jokin prosessi syö muistiasi ja haluat tyhjentää sen, Linux tarjoaa tavan huuhdella tai tyhjentää ram-välimuistin.
miten tyhjentää välimuisti Linuxissa?
jokaisessa Linux-järjestelmässä on kolme vaihtoehtoa tyhjentää välimuisti keskeyttämättä mitään prosesseja tai palveluita.
1. Tyhjennä vain PageCache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Tyhjennä dentries ja inodes.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Tyhjennä PageCache, dentries ja inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
yllä olevan komennon selitys.
synkronointi huuhtoo tiedostojärjestelmän puskurin. Komennon erottaa ";”
suorita peräkkäin. Komentotulkki odottaa jokaisen komennon päättymistä ennen kuin suorittaa seuraavan komennon järjestyksessä. Kuten mainittiin kernel documentation, kirjoittaminen drop_cache puhdistaa välimuistin tappamatta mitään sovellusta / palvelua, komento echo tekee työtä kirjallisesti tiedostoon.
Jos levykeskimuisti pitää tyhjentää, ensimmäinen komento on turvallisin yritys-ja tuotantotoiminnassa, sillä "...echo 1 > ….”
tyhjentää vain Pagecachen. Ei ole suositeltavaa käyttää kolmatta vaihtoehtoa edellä "...echo 3 >”
tuotannossa ennen kuin tietää mitä tekee, sillä se tyhjentää Pagecachen, dentriesin ja inodesin.
onko hyvä idea vapauttaa Linuxissa puskuria ja välimuistia, joita Linux-ydin voisi käyttää?
kun käytät erilaisia asetuksia ja haluat tarkistaa, onko se todella toteutettu erityisesti I / O-laajalla vertailuarvolla, saatat joutua tyhjentämään puskurivälimuistin. Voit pudottaa välimuistin kuten edellä on selitetty käynnistämättä järjestelmää eli, ei seisokkeja tarvitaan.
Linux on suunniteltu siten, että se katsoo levyvälimuistiin ennen levylle katsomista. Jos se löytää resurssin välimuistista, pyyntö ei saavuta levyä. Jos puhdistamme välimuistin, levyn välimuisti on vähemmän hyödyllinen, koska käyttöjärjestelmä etsii resurssia levyltä.
lisäksi se myös hidastaa järjestelmää muutamaksi sekunniksi, kun välimuisti puhdistetaan ja kaikki käyttöjärjestelmän vaatimat resurssit ladataan uudelleen levykeskivälimuistiin.
nyt luomme komentotulkkikirjoitusta, joka tyhjentää RAM-välimuistin automaattisesti päivittäin klo 2am cron-ajoitustehtävän kautta. Luo komentotulkkikommentit clearcache.sh ja lisää seuraavat rivit.
#!/bin/bash# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"echo "echo 3 > /proc/sys/vm/drop_caches"
Aseta suoritusoikeus clearcache.sh tiedosto.
# chmod 755 clearcache.sh
nyt voit soittaa komentosarjaan aina, kun haluat tyhjentää ram-välimuistin.
aseta nyt cron tyhjentämään RAM-välimuisti joka päivä klo 2am. Avaa crontab muokkausta varten.
# crontab -e
Lisää alla oleva rivi, Tallenna ja poistu suorittaaksesi sen kello 2.00.
0 2 * * * /path/to/clearcache.sh
lisätietoja siitä, miten cron työtä saatat haluta tarkistaa artikkelimme 11 Cron aikataulutus työpaikkoja.
onko hyvä idea tyhjentää RAM-välimuisti automaattisesti tuotantopalvelimella?
ei! ei ole. Ajattele tilannetta, kun olet ajoitettu script tyhjentää ram välimuisti päivittäin klo 2am. Everyday at 2am skripti suoritetaan ja se huuhtoo RAM-välimuistin. Yksi päivä mistä tahansa syystä, voi olla odotettua enemmän käyttäjät ovat verkossa sivustossasi ja etsivät resurssia palvelimeltasi.
samaan aikaan ajoitettu skripti ajaa ja tyhjentää kaiken välimuistissa. Nyt kaikki käyttäjä hakee tietoja levyltä. Se johtaa palvelimen kaatumiseen ja korruptoi tietokannan. Joten selkeä ram-välimuisti vain tarvittaessa, ja tunnettu jalka vaiheet, muuten olet Cargo kultti järjestelmänvalvoja.
miten tyhjentää Swap Space Linuxissa?
Jos haluat tyhjentää Swap-tilan, voit halutessasi suorittaa alla olevan komennon.
# swapoff -a && swapon -a
myös yllä olevaa komentoa voi lisätä yllä olevaan cron-komentosarjaan ymmärrettyään kaikki siihen liittyvät riskit.
nyt yhdistämme molemmat edellä mainitut komennot yhdeksi komennoksi, jotta voimme tehdä kunnollisen komentosarjan RAM-välimuistin tyhjentämiseksi ja tilan vaihtamiseksi.
# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'OR$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root
molempien yllä olevien komentojen testaamisen jälkeen ajetaan komento ”free-h” ennen ja jälkeen komentosarjan suorittamisen ja tarkistetaan välimuisti.