Portál AbcLinuxu, 10. května 2025 11:24

Dotaz: restartovat po zaplnění swap

22.9.2007 10:34 Lenin04
restartovat po zaplnění swap
Přečteno: 826×
Odpovědět | Admin
Mam databazovy server na kterem je celkem nedostacujici ram a tak se cas od casu stane ze se zaplni a po te se zacne pouzivat swap coz je konec. Pote musim server restartovat. Neslo by to udelat nejak automaticky? Na upgrade nemam protoze jsou tam pameti RIMM a to neni nejlevnejsi zalezitost.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.9.2007 10:39 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
Do cronu a analyzovat výstup příkazu
 cat /proc/meminfo 
vdusek avatar 22.9.2007 14:16 vdusek | skóre: 27
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
sysfence?
29.9.2007 23:39 edois
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
je nutne restartovat cely server? nestacilo by vypnout databazi, vypnout swap, zapnout swap, zapnout databazi? :)

poustet z cronu (upravit services a threshold):

#!/bin/bash

# pro 32MB na swapu:
THRESHOLD=32768
SERVICES="mysql apache2"

if [ "`A=0;
       for B in $(cat /proc/swaps  | tac | head -n -1 | awk '{print $4;}'); do
           A=$(($A+$B))
       done
       echo $A`" -ge "$THRESHOLD" ] ; then

    for A in $SERVICES; do
        /etc/init.d/$A stop
    done
    SWAPS="$(cat /proc/swaps | tac | head -n -1 | awk '{print $1;}')"
    for A in $SWAPS; do
        /sbin/swapoff $A
    done
    for A in $SWAPS; do
        /sbin/swapon $A
    done
    for A in $SERVICES; do
        /etc/init.d/$A start
    done

fi
10.10.2007 21:16 Lenin04
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
to by bylo super, ale ja sem v linuxu zacatecnik tak jediny co sem s tim udelal tak sem to hodil do cronu kazdejch 10m. Ale nejak my to nefunguje. Jo a pokud to pomuze moje distribuce je archlinux.
16.10.2007 12:12 edois
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
kdyz to spustite primo z bashe, hodi to nejakou chybu?
10.10.2007 22:29 Aldagautr | skóre: 20
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
nesla by spis prenastavit ta db?
o svobodu prichazi nejsnaze ten, kdo o ni nikdy nebojoval
11.10.2007 09:16 Lenin04
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
no uvitam jakou koliv radu. Tak at mate komplet info tak server je 2x1,7Ghz xeon a 512MB ram a v tom je ten problem ram je urcite nedostatecna, ale vzhledem k tomu ze je to RIMM tak nemam sanci sehnat dalsi za nejakou rozumnou cenu. Ale ta ram vlastne staci, ale tak jednou za dva dny se stane ze se v jednu chvyli posle moc dotazu na db a jakmile se zacne pouzivat swap tak je to konec, server se sekne.
11.10.2007 10:52 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Priklanel bych se k prozkoumani konfigurace DB. A taky bych asi nedoporucoval restart celeho serveru kvuli preplnenemu swapu. Prijde mi to dost hardcore, bo teda nevim za jak dlouho vam nabehne server, ale predstava, ze terba 2 minuty je nedostupny db server by mne osobne desila. jinak tady je jednoduchy script na restart stroje pokud je swap maximalne vyuzit:
#!/bin/bash

unused_swap_size=`cat /proc/meminfo | grep "SwapFree" | awk {'print $2'}`;

if [ $unused_swap_size -eq 0 ]; then 
	echo "full swap mem...";
	echo "reboot";
        reboot;
fi
no a dejme tomu ze script pojmenujete restart_when_swap_full tak do cronu zadate test co 1 minutu
*/1 * * * * nekde_na_hdd/restart_when_swap_full 1> /dev/null
16.10.2007 14:56 Jiří J. | skóre: 34 | blog: Poutník | Brno
Rozbalit Rozbalit vše Re: restartovat po zaplnění swap
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takže prvně zkoukněte /proc/sys/vm/swappiness .. a nastavte tamější hodnotu třeba na 10 (rozsah 0-100, čím menší hodnota, tím více systém preferuje čištění disk cache před swapováním).
Druhak je velmi nešikovné kvůli zaplněnému swapu restartovat celý OS, v případě swapfree == 0 už je s čištěním, řekl bych, pozdě, hodnotu vytahovanou výše popsaným způsobem možná raději kontrolovat
if [ $unused_swap_size -le cislo ]; then
...
kde cislo je třeba 5% velikosti swapu (i méně, podle rychlosti plnění).
Co se týká restartu - možná by stačilo ten jistý databázový server zastavit (obvykle /etc/init.d/program stop) provést něco jako swapoff /dev/partisna && swapon /dev/partisna a pak jej zase spustit, jak už bylo psáno výše...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.