Olá,

Em 8 de novembro de 2010 11:04, André Volpato <
[email protected]> escreveu:

> Bom dia,
>
> ----- Mensagem original -----
> | Bom dia pessoal,
> | Estou utilizando o postgresql 8.4 no Fedora 13.
> | Meu servidor tem 8GB RAM.
> | Estou configurando o postgresql da seguinte forma:
> | shared_buffers = 512MB
> | max_connections = 50
> | work_mem = 80MB
>
>
> Defina pra gente qual o tipo de aplicação, mas em via de regra, teu shared
> buffers está baixo, e o work_mem um pouco alto.
>
>
> |
> | Quando inicio o serviço e monitoro no comando top vejo que mais de
> | mais de
> | um processo postmaster utiliza 512MB de memória residente.
>

Vamos lá. O top mostra o total acumulado e não o realmente usado, tem que
tomar cuidado com isso ao monitorar.

O parâmetro shared_buffers é compartilhado por todos os processos do
PostgreSQL. O banco usa esta memória para as operações ativas (dados mais
acessados estão nesta memória), isto pode ser várias tabelas, uma tabela
inteira e índices.

É importante analisar o seu sistema. É um ambiente dedicado para o
PostgreSQL, ou tem por exemplo, Java rodando neste servidor?

Cuidado ao modificar o parâmetro shared_buffers pois se os parâmetros de
kernel que controlam a memória compartilhada não tiverem configurados
adequadamente para suportar o valor definido no shared_buffers o seu
PostgreSQL pode não subir.

Com relação ao work_mem ele me parece um valor um pouco alto, visto que esta
memória é utilizada para operações de agrupamento e ordenação e pelo que
você comentou seu banco contempla na maioria operações de escritam, então o
work_mem não é tão relevante para você.



shared=compartilhado. Esses mesmos 512MB são usados por todos os processos,
> e servem principalmente pra manter na RAM dados de tabelas recentemente
> usadas.
>
>
> | Gostaria de saber se colocando o shared_buffers com 512MB pode
> | acontecer que cada uma das 50 conexões permitidas pelo max_conections
> consuma 512MB
> | de memória e com isso fazer com que o servidor use swap?
>
> Não se preocupe, você pode aumentar o shared buffers entre 1GB e 2GB, a
> memória é compartilhada. Mas na minha experiência com RedHat/Fedora, o uso
> de swap acontece sempre nesses sistemas. Nos únicos servidores que fui
> obrigado a usar redhat, eu desativei a swap e aumentei a RAM pra ter um
> desempenho decente.
>
>
>
> | O consumo de memória dos processos postmaster dependem do
> | shared_buffers ou esse paramtro não limita o consumo do processo?
>
>
> Não limita, você precisa contar também o work_mem. Cada SQL rodando
> ordenação vai usar 80MB de RAM, e, caso ele não consiga alocar esse tanto, o
> processo morre. Procure por OOM Killer, e tente reduzir o work_mem global e
> aumentá-lo via aplicação quando for necessário.
>

Fique bem atento a dica que o André comentou do OOM Killer.



>
>
> []´s, André Volpato
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


[]s
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a