Java processa toda a “memória baixa” no meu Xen VPS

1

Isso é no Centos 5, Linux 2.6.33.3-xenU # 1 SMP qua 05 de maio 00:49:22 UTC 2010 i686 i686 i386 GNU / Linux

Eu tenho um processo do servidor java que eu normalmente executo com a seguinte configuração

-Xmx700m -Xms500m -XX:PermSize=128m -noclassgc

E é como um campeão. Mas, com o tempo, à medida que meus dados de aplicativo crescem, isso não será suficiente para operações normais.

Recentemente, adicionei mais memória ao meu VPS e tentei estender a memória:

-Xmx1024m -Xms1024m -XX:PermSize=256m -noclassgc

E o que acontece é que, quando inicializa o aplicativo, ele consome toda a "memória baixa" e o meu aplicativo trava (e geralmente há uma mensagem de rastreamento de pilha do kernel, mas não um pânico ou bug)

E nesse momento, eu estou torrado - o processo defunto parece possuir toda a memória fraca, e o assassino de oom começa a matar tudo. Eu tenho que reiniciar para corrigi-lo.

Mas quando eu volto para 700 meg, ele roda como um campeão novamente, e não usa muita "memória baixa" - (eu quero dizer, há cerca de 690 meg de memória baixa alocada, e apenas 140 meg é usado)

[]$ free -lm
             total       used       free     shared    buffers     cached
Mem:          2700       1334       1365          0        100        274
Low:           689        140        548
High:         2011       1194        816
-/+ buffers/cache:        959       1740
Swap:          714          0        714

Java é o 1.6:

java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)

Alguém sabe por que isso está acontecendo? Estou planejando atualizar o java, mas se houver outro problema conhecido para esse cenário, eu adoraria ouvi-lo. Alterar o kernel pode ser problemático, mas se houver alguma alteração na configuração local do servidor, eu poderia usar memória alta em vez de pouca memória.

    
por johnbr 22.04.2011 / 21:22

2 respostas

1

Eu tive problemas semelhantes no passado, mas isso foi com um VPS do OpenVZ em vez do Xen. Além de atualizar o Java, você também pode tentar JVMs alternativas, como Oracle JRockit ou o IBM JDK , que não aloque necessariamente a memória da mesma maneira e que possa apenas resolver seu problema.

    
por 22.04.2011 / 22:39
0

a memória baixa é usada pelo kernel - você teria os seguintes níveis

  • 0-16MB - rotinas de nível muito baixo usadas pelo kernel
  • 16MB - 768MB - heap para o kernel
  • 768MB - MAX_MEM - usado para processos.

Mesmo que você defina o Xmx1024m para 1024 - isso não significa que o jvm não terá mais memória (1024 deve a memória que está disponível para o aplicativo + o próprio jvm) - para ver o tamanho real da memória use ps - elF ou superior.

mais uma coisa para olhar para ele é o fato de que xen tem um driver baloon que relata mais memória do que você realmente tem - isso é porque o host (não vps) tentará dar um pouco mais de memória para vps então realmente é disponível - mas se o host estiver ocupado não terá memória e seu processo será cancelado ... verifique com seu provedor vps.

    
por 27.04.2011 / 17:39