Quantos processos Java foram inicializados com o heap de 8 GB? Talvez mantenha o máximo em 8 e abaixe o tamanho de heap inicial. Se você tiver o espaço em disco, experimente também aumentar o tamanho do swap
Nosso servidor Linux está respondendo muito lentamente. top
não mostra nenhum uso excessivo da CPU. Notei que, apesar de haver cerca de 5 GB de memória livre, o sistema está usando todo o swap sem nenhuma troca livre. Isso poderia ser motivo para o sistema ficar lento? Existe alguma solução além de reduzir o número de processos?
Em segundo lugar, embora haja memória livre disponível, por que o Linux já está trocando? Eu pensei que a troca é usada somente quando não há memória real.
free -m
total used free shared buffers cached
Mem: 32045 26218 5826 0 127 123
-/+ buffers/cache: 25967 6077
Swap: 16387 16387 0
Atualização:
-Xms8000m -Xmx8000m
Parece maluco no primeiro olhar, mas possivelmente alguém tenha motivos para fazer isso. Eu acho que isso é o que está comendo a maior parte do swap, mas eu preciso investigar como o heap java afeta o Linux swap e memória / performance em geral. Quaisquer ponteiros sobre o impacto da configuração acima do heap Java no desempenho do sistema serão realmente úteis.
Quantos processos Java foram inicializados com o heap de 8 GB? Talvez mantenha o máximo em 8 e abaixe o tamanho de heap inicial. Se você tiver o espaço em disco, experimente também aumentar o tamanho do swap
Você tem tmpfs
montagens? Estes são suportados pelo swap e podem ser a causa do espaço de swap zero disponível. Do syslog
ou dmesg
mostram algo inesperado? Tem certeza de que seu sistema não está constantemente trocando? Verifique vmstat -SK 1
e verifique as colunas si
e so
(trocado e retirado em KB / s). Se você precisar saber quais processos estão trocando, execute sudo iotop -od5
. Se você estiver executando o Ubuntu, você precisará de delayacct
kernel flag para estatísticas completas. Para mim, o seu sistema parece ter cache e buffers muito pequenos para uma memória de sistema tão grande.
A troca é usada para melhorar o desempenho de todo o sistema. Exemplo disso seria trocar partes de um grande programa que está atualmente em suspensão para permitir o uso de mais memória para cache de disco ou buffers de arquivo. Se você fosse desabilitar a troca nesse caso, o sistema teria efetivamente cache de disco e buffers de arquivo menores. Como seu espaço de troca está cheio, você pode efetivamente sofrer com o mesmo problema.
O espaço de troca é especialmente importante se você tiver algum programa que "vaze" a memória (isto é, um programa adquire blocos de memória que não são realmente usados). Tal "vazamento" pode não ser um erro no programa, pode acontecer de a memória ser usada tão raramente que possa ser melhor tratada como vazada. Sem espaço de troca, essa memória perdida não pode ser usada como cache ou buffers.
Um sistema operacional rodando corretamente com memória virtual está usando swap praticamente sempre, a menos que todo o conjunto de trabalho (todos os arquivos acessados, toda a memória reservada pelos aplicativos e todos os buffers de gravação) caiba na memória por todo o tempo de execução do sistema. Na maioria dos casos, isso só é verdade se o sistema for constantemente reinicializado ou se o sistema tiver uma quantidade enorme de RAM em comparação com o tamanho total do sistema de arquivos.
Tags performance swap process java linux