Tuning OpenVZ Containers para funcionar melhor com Java?

1

Eu tenho um servidor de 8 GB de RAM (dedicado) e atualmente tenho máquinas virtuais KVM rodando lá (com sucesso) no entanto eu estou pensando em mudar para OpenVZ como KVM parece um pouco exagerado com muita sobrecarga para o que eu usá-lo para .

No passado eu usei OpenVZ Containers, hospedado por mim e de outros provedores e Java não parece funcionar bem com eles .. Um exemplo é que se eu der um contêiner de 2 GB de RAM (sem burst) (com ou sem vswap não importa) uma instância java só pode ser ajustada para usar no máximo 1500 MB dessa RAM (-Xmx, -Xms).

Idealmente, gostaria de poder criar contêineres "Mini" com cerca de 256MB, 512MB, 768 RAM e executar algumas instâncias de java neles.

Minha pergunta é: estou tentando encontrar uma maneira ideal de ajustar uma configuração de contêiner OpenVZ para trabalhar melhor com a memória Java.

Por favor, não sugira nada relacionado às configurações do Java, estou procurando por respostas específicas do OpenVZ. Embora eu acolha qualquer sugestão se você achar que pode me ajudar.

Muito apreciado, Daniel

    
por Daniel 22.12.2012 / 16:43

2 respostas

1

Você tem que usar o kernel RHEL6 (também conhecido como 2.6.32-, ou 042stab) e configurar seus contêineres com o VSwap. Consulte o link para obter mais detalhes. Isso é feito por padrão em novas instalações.

Se você quiser mini-contêineres, atribua a RAM de que precisa e, em seguida, duas a quatro vezes a quantidade de troca, para permitir algum "alongamento" para a memória de TC. Por exemplo, para 256M isso seria

vzctl define $ CTID --ram 256M --swap 1G --save

Certifique-se de que outros beancounters (especialmente privvmpages) estejam configurados para ilimitado. Mais uma vez, consulte link para obter mais detalhes.

    
por 02.07.2013 / 00:07
1

Por que excluir as configurações de java se o problema pode ser apenas um mal-entendido da opção -Xmx?

Eu consideraria 2 GB ou RAM para um heap de 1,5 GB como um dimensionamento correto. O heap é apenas uma parte da memória utilizada por uma JVM. Código nativo incluindo o próprio código da JVM, memória usada por bibliotecas nativas, cache de código, memória baseada em pilha (cada thread tem sua própria pilha) e a geração permanente são armazenadas fora do heap.

    
por 22.12.2012 / 21:42