Linux sem memória no VPS

1

No meu ram de 4 GB VPS (CentOS) (2 + 2 atribuído dinamicamente quando necessário) e tenho tomcat rodando com as seguintes opções JAVA_OPTS="- Xms256m -Xmx2048m -XX: MaxPermSize = 256m".

Agora, quando tento iniciar outro aplicativo baseado em java (como o servidor hudson), recebo o seguinte erro:

 There is insufficient memory for the Java Runtime Environment to continue.
 Native memory allocation (malloc) failed to allocate 664080 bytes for Chunk::new
 An error report file with more information is saved as:
 /server/hs_err_pid26476.log

Parece que o sistema não conseguiu alocar 650 KB de memória, mas deve ter 1,2 GB  livre.

free -m 
             total       used       free     shared    buffers     cached
Mem:          4096       2816       1279          0          0          0
-/+ buffers/cache:       2816       1279
Swap:            0          0          0

Eu encontrei em algum lugar que eu deveria também verificar / proc / user_beancounters, que mostra failcnt em privvmpages. Eu não tenho idéia do que isso significa (o provedor dá 4GB de memória como ele deveria? Ou ele está trapaceando?)

# cat /proc/user_beancounters
Version: 2.5
       uid  resource                     held              maxheld              barrier                limit              failcnt
 70692271:  kmemsize                 15371949             15388993             41943040             46137344                    0
            lockedpages                     0                    0                 1024                 1024                    0
            privvmpages                720030               720189              1048576              1048576                 9604
            shmpages                     9001                 9001                65536                65536                    0
            dummy                           0                    0  9223372036854775807  9223372036854775807                    0
            numproc                       109                  109                  256                  256                    0
            physpages                  173670               173780  9223372036854775807  9223372036854775807                    0
            vmguarpages                     0                    0               262144               262144                    0
            oomguarpages               174598               174708  9223372036854775807               262144                    0
            numtcpsock                     30                   30                 1440                 1440                    0
            numflock                       14                   14                  752                  826                    0
            numpty                          1                    1                   64                   64                    0
            numsiginfo                      0                    0                 1024                 1024                    0
            tcpsndbuf                  601840               601840              6881280             10813440                    0
            tcprcvbuf                  491520               491520              6881280             10813440                    0
            othersockbuf               174600               174600              4504320              8388608                    0
            dgramrcvbuf                     0                    0              1048576              1153432                    0
            numothersock                  117                  118                 1440                 1440                    0
            dcachesize                      0                    0              7340032              8074035                    0
            numfile                      3516                 3516                16384                16384                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            dummy                           0                    0                    0                    0                    0
            numiptent                      18                   18                  400                  405                    0

    
por gisit 25.11.2012 / 22:05

2 respostas

4

Os provedores OpenVZ normalmente vendem a capacidade de RAM de suas máquinas virtuais como dois números: RAM "garantida" e "estourada". Você deve sempre obter a quantidade "garantida" de RAM, e pode usar até a quantidade "burst" se os recursos do host permitirem. Por exemplo, um VPS pode ser vendido como "512MiB garantido 1GiB burst RAM".

Você sempre deve ter uma alocação de memória bem-sucedida abaixo do valor "garantido", mas as alocações de memória podem falhar acima dessa quantidade, se outras máquinas virtuais no host também estiverem consumindo memória RAM ou se o provedor tiver super-inscrito a máquina ( quase sempre).

Para saber quais são esses números, veja os barrier para vmguarpages que representam o "garantido" RAM, e o limit para privvmpages que representa a RAM "burst". Cada um desses números é expresso em várias páginas 4KiB.

Portanto, no seu caso, podemos ver que você tem 1GiB (262144) "garantido" RAM e 4GiB (1048576) "burst" RAM. (Se estes não são os números que lhe foram prometidos, você precisa ter uma conversa muito desagradável com o seu provedor de VPS.)

Já que você já está bem acima do 2GiB usado na VM, sua alocação de memória pode falhar, porque está acima do valor "garantido".

    
por 26.11.2012 / 01:15
0

Provavelmente, o seu provedor garante apenas 2 GB de memória e mais dois, se disponíveis, ou seja, se os outros clientes atualmente precisam de menos (o que raramente será o caso). Portanto, seria melhor você assumir um máximo de 2 em vez de 4 GB.

O failcount em privvmpages mostra com que frequência seu sistema falhou em alocar memória (grosso modo).

    
por 25.11.2012 / 22:34