SOM alle andre operativsystemer HAR GNU / Linux implementert en minnehåndtering effektivt og enda mer enn det. Men Hvis noen prosess spiser bort minnet ditt og Du vil rydde det, Gir Linux en måte å skylle eller tømme ram-cache på.
Slik Fjerner Du Cache i Linux?
Hvert Linux-System har tre alternativer for å fjerne cache uten å forstyrre noen prosesser eller tjenester.
1. Slett Bare PageCache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Klare dentries og inodes.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Fjern PageCache, dentries og inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
Forklaring av kommandoen ovenfor.
synkronisering vil spyle filsystembufferen. Kommando Adskilt av ";”
kjør sekvensielt. Skallet venter på at hver kommando avsluttes før du utfører neste kommando i sekvensen. Som nevnt i kernel documentation, vil skriving til drop_cache rense cache uten å drepe noe program / tjeneste, command echo gjør jobben med å skrive til fil.
hvis du må tømme diskbufferen, er den første kommandoen tryggest i enterprise og produksjon som "...echo 1 > ….”
vil bare fjerne PageCache. Det anbefales ikke å bruke tredje alternativet ovenfor "...echo 3 >”
i produksjon før du vet hva du gjør, da Det vil fjerne PageCache, dentries og inodes.
er det en god ide å frigjøre Buffer og Cache I Linux som kan brukes Av Linux-Kjernen?
når du bruker ulike innstillinger og ønsker å sjekke, hvis det faktisk er implementert spesielt på i / O-omfattende benchmark, så må du kanskje fjerne buffer cache. Du kan slippe cache som forklart ovenfor uten å starte Systemet på Nytt, dvs. ingen nedetid kreves.
Linux er utformet på en slik måte at den ser på diskbufferen før du ser på disken. Hvis den finner ressursen i hurtigbufferen, kommer ikke forespørselen til disken. Hvis vi rengjør hurtigbufferen, vil diskbufferen være mindre nyttig da OPERATIVSYSTEMET vil se etter ressursen på disken.Videre vil det også bremse systemet i noen sekunder mens cachen er renset og hver ressurs som KREVES AV OS er lastet på nytt i disk-cache.Nå skal vi lage et shell script for å automatisk tømme RAM cache daglig på 2am via en cron scheduler oppgave. Opprett et shell-skript clearcache.sh og legg til følgende linjer.
#!/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"
Angi utføringstillatelse på clearcache.sh fil.
# chmod 755 clearcache.sh
Nå kan du ringe skriptet når du trenger å tømme ram cache.
sett nå en cron for å fjerne RAM-cache hver dag klokken 2. Åpne crontab for redigering.
# crontab -e
Legg til underlinjen, lagre og avslutt for å kjøre den klokken 2 daglig.
0 2 * * * /path/to/clearcache.sh
for mer informasjon om hvordan du cron en jobb kan du sjekke vår artikkel om 11 Cron Planlegging Jobber.
er det lurt å automatisk tømme RAM-bufferen på produksjonsserveren?
Nei! det er det ikke. Tenk på en situasjon når du har planlagt skriptet for å fjerne ram cache hver dag på 2 am. Hver dag på 2 am skriptet utføres og det spyler RAM cache. En dag av hvilken som helst grunn, kan være mer enn forventet brukere er online på nettstedet ditt og søker ressurs fra serveren din.
samtidig planlagt script kjøre og fjerner alt i cache. Nå er alle brukeren henter data fra disken. Det vil resultere i serverkrasj og ødelegge databasen. Så klart ram-cache bare når det er nødvendig, og kjent dine fottrinn, ellers er Du En Cargo Cult Systemadministrator.
Slik Fjerner Du Bytteplass I Linux?
hvis du vil fjerne Bytteplass, kan du kjøre kommandoen nedenfor.
# swapoff -a && swapon -a
du kan også legge over kommandoen til et cron-skript ovenfor, etter å ha forstått all tilhørende risiko.Nå vil vi kombinere begge kommandoene ovenfor i en enkelt kommando for å lage et riktig skript for å fjerne RAM-Cache og Bytte Plass.
# 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
etter å ha testet både over kommandoen, vil vi kjøre kommandoen «free-h» før og etter å ha kjørt skriptet og vil sjekke cache.