Ho un box Linux da 8 GB di RAM su cui sono in esecuzione 4 server Tomcat. Uno di questi è impostato su 3000 MB di memoria (impostazione jvm -Xms e -Xmx) e altri su 1500 MB. Anche la partizione di swap è impostata su 8Gigs. Quando avvio questi server, l'utilizzo del file di scambio è basso. Ma per un periodo di giorni e durante determinati periodi in cui uno / tutti i server sono in attività di punta, l'utilizzo dello swap inizia ad aumentare. Ecco un tipico output sar -r.
kbmemfree kbmemused% membbed kbbuffer kbcached kbswpfree kbswpused % swpused kbswpcad
48260 8125832 99,41 196440 2761852 7197688 1190912 14,20 316044
75504 8098588 99.08 198032 2399460 7197688 1190912 14.20 316032
Mostra lo swap del 14,2% attualmente utilizzato. La cosa divertente è che questa% NON diminuisce MAI . Continua ad aumentare e raggiunge fino al 30-40% . Riavviamo i nostri server settimanalmente.
Suppongo che la % swpused aumenti durante i periodi di picco dell'attività e diminuisca durante i periodi di bassa attività ... O almeno rimanga costante. Sembra che lo spazio di swap non venga mai recuperato dal sistema operativo.
Output di libero: libero -m totale usato libero buffer condiviso condiviso memorizzato nella cache Mem: 7982 7937 45 0 32 2088 - / + buffer / cache: 5816 2166 Swap: 8191 1163 7028
Quindi ci sono almeno 2 g di Ram gratis. Quindi la domanda è: perché lo spazio di swap continua ad aumentare e non viene recuperato dal sistema operativo? O come eseguire il debug di questo per capire cosa sta succedendo ...