som ethvert andet operativsystem har GNU/Linou implementeret en hukommelsesstyring effektivt og endnu mere end det. Men hvis en proces spiser din hukommelse væk, og du vil rydde den, giver Linuk en måde at skylle eller rydde ram-cache på.
Sådan ryddes Cache i Linuk?
hvert system har tre muligheder for at rydde cache uden at afbryde processer eller tjenester.
1. Ryd kun PageCache.
# sync; echo 1 > /proc/sys/vm/drop_caches
2. Klare tandproteser og inoder.
# sync; echo 2 > /proc/sys/vm/drop_caches
3. Ryd PageCache, dentries og inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
forklaring af ovenstående kommando.
synkronisering vil skylle filsystembufferen. Kommando adskilt af ";”
Kør sekventielt. Skallen venter på, at hver kommando afsluttes, før den næste kommando udføres i sekvensen. Som nævnt i kernedokumentation vil skrivning til drop_cache rense cachen uden at dræbe nogen applikation/service, command echo gør jobbet med at skrive til fil.
Hvis du skal rydde diskcachen, er den første kommando sikreste i enterprise og produktion som "...echo 1 > ….”
vil kun rydde PageCache. Det anbefales ikke at bruge tredje mulighed ovenfor "...echo 3 >”
i produktion, før du ved hvad du laver, da det vil rydde PageCache, dentries og inodes.
er det en god ide at frigøre Buffer og Cache i Linuk, der kan bruges af Linukerne?
når du anvender forskellige indstillinger og vil kontrollere, om det faktisk implementeres specielt på I/O-omfattende benchmark, skal du muligvis rydde buffercache. Du kan slippe cache som forklaret ovenfor uden at genstarte systemet, dvs.ingen nedetid kræves.
er designet på en sådan måde, at den ser ind i diskcachen, før den Kigger på disken. Hvis den finder ressourcen i cachen, når anmodningen ikke disken. Hvis vi renser cachen, vil diskcachen være mindre nyttig, da operativsystemet vil lede efter ressourcen på disken.
desuden vil det også bremse systemet i et par sekunder, mens cachen renses, og hver ressource, der kræves af OS, indlæses igen i diskcachen.
nu opretter vi et shell-script til automatisk at rydde RAM-cache dagligt kl 2 via en cron-planlægningsopgave. Opret et shell script clearcache.sh og tilføj 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"
sæt udfør tilladelse på clearcache.sh fil.
# chmod 755 clearcache.sh
nu Kan du ringe til scriptet, når du har brug for at rydde ram-cache.
Indstil nu en cron til at rydde RAM-cache hver dag klokken 2. Åbn crontab til redigering.
# crontab -e
Tilføj nedenstående linje, Gem og afslut for at køre den klokken 2 dagligt.
0 2 * * * /path/to/clearcache.sh
for flere detaljer om, hvordan du cron et job, kan du tjekke vores artikel om 11 Cron planlægning job.
er det en god ide at automatisk rydde RAM-cache på produktionsserveren?
Nej! det er det ikke. Tænk på en situation, hvor du har planlagt scriptet til at rydde ram-cache hver dag klokken 2. Hver dag kl 2 scriptet udføres, og det skyller din RAM cache. En dag af en eller anden grund, kan være mere end forventet brugere er online på din hjemmeside og søger ressource fra din server.
samtidig planlagt script køre og rydder alt i cache. Nu henter alle brugeren data fra disken. Det vil resultere i servernedbrud og ødelægge databasen. Så klar ram-cache kun når det kræves, og kendte dine fodtrin, ellers er du en Cargo Cult systemadministrator.
Sådan ryddes bytteplads?
Hvis du vil rydde bytteplads, kan du muligvis køre nedenstående kommando.
# swapoff -a && swapon -a
Du kan også tilføje kommandoen ovenfor til et cron-script ovenfor efter at have forstået al den tilknyttede risiko.
nu kombinerer vi begge ovenstående kommandoer i en enkelt kommando for at lave et ordentligt script til at rydde RAM-Cache og bytte plads.
# 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
efter test af begge ovenstående kommando kører vi kommandoen “free-h” før og efter kørsel af scriptet og kontrollerer cache.