Está configurada para 100 conexões + 3 de super usuarios..
mas chegam a algo de 50 conexoes
e com shared_buffer de 512mb..
Sobre o consumo do S.O. não sei dizer..
Analizando pelo historico do Zabbix, num periodo em que nao há produção o
memória maxima foi de 600mb.
Tem alguma forma de buscar esse valor de forma mais precisa?
De qualquer forma, antes de definir o valor da work_mem fizemos o calculo
considerando 1gb de ram para o sistema..
shared_buffer + ( (max_connections + superusers) * (work_mem * 2)) +
(autovaccum_max_workers * maintenance_work_mem) + S.O
select (512 + ( (100 + 3) * (9 * 2)) + (3 * 16) + 1024 );
O resultado é 3438mb...
Considerando que temos 4gb de RAM, seria esse um valor ruim?
Ou minha conta está errada?
> Suas consultas que precisam de memória serão um pouco mais lentas, pois o
> PostgreSQL fará
> arquivos temporários para suprir a necessidade.
Foi por esse motivo que alteramos a work_mem, pois na massa de dados que é
retornada utilizamos order by, o que as torna muito demoradas,
principalmente quando passa a utilizar o disco ao inves da memoria.
Ja reduzimos no maximo a quantidade de campos a serem ordenados.
Att,
Tulio
>________________________________
> De: Flavio Henrique Araque Gurgel <[email protected]>
>Para: Tulio Santos <[email protected]>; Comunidade PostgreSQL
>Brasileira <[email protected]>
>Enviadas: Quinta-feira, 9 de Fevereiro de 2012 12:37
>Assunto: Re: [pgbr-geral] Mensagem "out of memory for result query"
>
>> Fiz uma consulta grande no banco e recebi a mensagem "out of memory for
>> result query".
>> A consulta foi executada no servidor master.
>> Atualmente minha work_mem esta em 9mb, sendo que foi alterada recentemente,
>> e antes da alteração ainda nao havia me deparado com esta mensagem.
>> A consulta é pesada a ponto de dificilmente vir a ser utilizada, mas pode
>> ocorrer.
>> Alguem já se deparou com isso?
>
>Sim.
>
>> Qual a solução?
>
>Você esgotou a memória RAM disponível e o PostgreSQL não conseguiu alocar mais.
>
>>
>> Centos 6
>> 4gb RAM - Utilizando work_mem 9mb
>
>Quantas conexões?
>Quanto de shared_buffers?
>
>Se a equação:
>selects * work_mem + sub-selects * work_mem + shared_buffers + consumo
>do S.O. > RAM total
>você terá a mensagem que recebeste.
>
>Diminuir o work_mem pode resolver este problema. Suas consultas que
>precisam de memória serão um pouco mais lentas, pois o PostgreSQL fará
>arquivos temporários para suprir a necessidade. Mas não se esgotará
>toda a RAM disponível.
>
>[]s
>Flavio Gurgel
>
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral