Archiv der Kategorie: Linux Howto

THINK UNBLOG GNU/Linux Tutorials Howto Workaround DevOps Code.

Server Memory cache buffers reset

Welcher Linux Admin kennt das nicht, nach einer Gewissen uptime ist fast das gesamte Memory für cache und buffers des Servers verbraucht, eigentlich ist es nicht nötig in das Memory Management des Systems einzugreifen, ist das System jedoch knapp an Arbeitsspeicher, lässt sich mit einem einfachen Script Abhilfe schaffen.

free_mem

Als root wird folgendes Script editiert:

$ vi /usr/sbin/clearcache.sh

#!/bin/bash
# freeing cache buffers

echo $(date) >> /var/log/clearcache.log

freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)

cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

sync; echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM." >> /var/log/clearcache.log

Nun das Script ausführbar machen.

$ u+x /usr/sbin/clearcache.sh

und als crontask um 5, 13 und 21 Uhr ausführen lassen.

echo "0 5,13,21 * * * root /usr/sbin/clearcache.sh" >> /etc/crontab

Mit free -m lässt sich vor und nach dem reset das freie Memory beobachten, auch wird der Task unter /var/log/clearcache.log protokolliert und kann mit tail /var/log/clearcache.log auf stdout ausgegeben.

clear cache
clear cache