Eu tenho uma caixa Linux de 8 GB de RAM na qual 4 servidores tomcat estão em execução. Um deles está definido para 3000 MB de memória (configuração de jvm -Xms e -Xmx) e outros estão definidos para 1500 MB. A partição de troca também é definida como 8Gigs. Quando inicio esses servidores, o uso do arquivo de troca é baixo. Porém, durante um período de dias e durante determinados períodos em que um / todos os servidores estão em atividade de pico, o uso de troca começa a aumentar. Aqui está uma saída típica sar -r.
kbmemfree kbmemused% kbbuffers memorizados 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
Ele mostra 14,2% de swap usado atualmente. O engraçado é que esse% NUNCA diminui . Ele continua a aumentar e atingir até 30-40% . Reiniciamos nossos servidores semanalmente.
Eu assumiria que o % swpused aumentou durante períodos de atividade de pico e diminuiu durante períodos de atividade baixa .. Ou pelo menos permaneceu constante. Parece que o espaço de troca nunca é recuperado pelo sistema operacional.
Saída de livre: total -m total usado buffers compartilhados gratuitos armazenados em cache Mem: 7982 7937 45 0 32 2088 - / + buffers / cache: 5816 2166 Swap: 8191 1163 7028
Portanto, há pelo menos 2g de RAM grátis. Portanto, a pergunta é: Por que o espaço de troca continua aumentando e não está sendo recuperado pelo sistema operacional? Ou como depurar isso para descobrir o que está acontecendo.