Ajustando o Postgresql em um Linode VPS de 16GB

3

Estou executando um PostgreSQL dedicado em um Linode de 16GB (Ubuntu 12.04 32bit). Eu tentei usar o pgtune, mas vou me deparar com erros de memória compartilhada. Ou seja,

The PostgreSQL server failed to start. Please check the log output:
2014-02-10 08:32:39 EST FATAL:  could not create shared memory segment: Invalid argument
2014-02-10 08:32:39 EST DETAIL:  Failed system call was shmget(key=5432001, size=4107419648, 03600).
2014-02-10 08:32:39 EST HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 4107419648 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
    If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
    The PostgreSQL documentation contains more information about shared memory configuration

Então eu fui em frente e comecei a ajustar o SHMAX, mas eu não tenho certeza do que eu deveria estar configurando isso. Eu estava esperando pgtune iria me deixar saber ou que eu poderia encontrar alguma documentação @ linode sobre isso. Eu suponho que esse valor está em bytes? Eu li que deve ser qualquer coisa de 1/4 a 1/2 da memória total (assim 4 ou 8 GB), mas também que não deve exceder 4 GB quando você está em 32 bits.

Algum conselho? O que você recomendaria para configurar o SHMAX e por quê? Devo desistir do pgtune ou passar um parâmetro de memória máxima para ele?

Obrigado!

Detalhes da memória VPS:

             total       used       free     shared    buffers     cached
Mem:      16617352     334320   16283032          0      18132     208400
-/+ buffers/cache:     107788   16509564
Swap:       524284          0     524284

- Atualização -

Migrar para 64 bits basicamente fez tudo funcionar. O SHMAX estava sendo aceito (está em bytes a propósito). Descobrir o que configurá-lo para apenas fui com metade da minha memória RAM disponível na caixa ("free -b" no Ubuntu para ver a memória em bytes).

Basicamente fui com as recomendações do pgtune para o resto com alguns pequenos ajustes.

apt-get install pgtune
    
por Dave Rapin 10.02.2014 / 14:43

1 resposta

9

Você instalou um sistema operacional de 32 bits em uma máquina com 16 GB de RAM. Isso não vai funcionar. Mesmo que um SO de 32 bits possa tecnicamente usar mais de 4 GB de RAM, nenhum processo único no sistema operacional pode exceder esse limite. Comece novamente e instale um sistema operacional de 64 bits, e esse problema desaparecerá (junto com todos os outros problemas que você terá).

    
por 10.02.2014 / 14:48