Discussion:
Weinig geheugen
(te oud om op te antwoorden)
Paul van der Vlis
2022-12-19 09:18:42 UTC
Permalink
Hallo,

Een klant huurt een VM bij een cloudprovider waar je meer geheugen kunt
nemen, maar later niet minder. Nu heeft zijn webshop het voor de kerst
erg druk en zorgde OOM-killer ervoor dat het soms mis ging.

Daarom heb ik de swap maar vergroot, dan wordt de site wellicht traag
maar vliegt er niets uit. In de praktijk valt het wel mee hoe traag hij
is overigens (snelle SSD). Nu vult zich de swap zich ook behoorlijk, is
dit gewoon cache, of kan ik de swap beter verder vergroten?

Output van "free -m" met wat correcties voor de leesbaarheid:

total used free shared buffers cached
Mem: 4960 4821 139 149 5 407
-/+ buffers/cache: 4409 551
Swap: 10239 9202 1037

Groet,
Paul
--
Paul van der Vlis Linux systeembeheer Groningen
https://vandervlis.nl
Coen
2022-12-19 18:47:47 UTC
Permalink
Post by Paul van der Vlis
Een klant huurt een VM bij een cloudprovider waar je meer geheugen kunt
nemen, maar later niet minder. Nu heeft zijn webshop het voor de kerst
erg druk en zorgde OOM-killer ervoor dat het soms mis ging.
Daarom heb ik de swap maar vergroot, dan wordt de site wellicht traag
maar vliegt er niets uit. In de praktijk valt het wel mee hoe traag hij
is overigens (snelle SSD). Nu vult zich de swap zich ook behoorlijk, is
dit gewoon cache, of kan ik de swap beter verder vergroten?
Je kan zien welke processen er in de swap zitten:

for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{
print ""}' $file; done | sort -k 2 -n -r | less

(Deze regel zal wel vreemd afgebroken worden)


Of met iets als:

#!/bin/bash
# Get current swap usage for all running processes
# Erik Ljungstrom 27/05/2011
# Modified by Mikko Rantalainen 2012-08-09
# Pipe the output to "sort -nk3" to get sorted output
# Modified by Marc Methot 2014-09-18
# removed the need for sudo

SUM=0
OVERALL=0
for DIR in `find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"`
do
PID=`echo $DIR | cut -d / -f 3`
PROGNAME=`ps -p $PID -o comm --no-headers`
for SWAP in `grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'`
do
let SUM=$SUM+$SWAP
done
if (( $SUM > 0 )); then
echo "PID=$PID swapped $SUM KB ($PROGNAME)"
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL KB"


Cache pages worden niet op swap opgeslagen. Disk info cachen op disk
schiet natuurlijk niet op.

Wellicht is het tunen van het aantal childs van Php/Apache en de caches
van Mysql mogelijk waardoor je gewoon binnen je available memory kan
blijven.

Gr,
Coen

Loading...