2013/7/2 Flavio Henrique Araque Gurgel <fla...@4linux.com.br> > Em 02-07-2013 11:36, Luiz Carlos L. Nogueira Jr. escreveu: > >> De 50MB para 4MB me parece uma mudança muito brusca! >> >> *-Essa alteração foi solicitada pelo pessoal que desenvolve o sistema >> (CNJ). Fomos obrigados a implantar* >> > > Bom, fica difícil ajudar a resolver seu problema se você não tem autonomia > ou puder sugerir ajustes, certo :) > > Mas então acho que você poderia pelo menos analisar a consulta e sugerir a solução correta com valores mais palpáveis. A minha impressão (pela mudança de 50MB para 4MB do work_mem) é que esses valores estão sendo chutados ao acaso.
> *É dedicado, com 8 cores, 32 GB de memória. Uma máquina muito boa >> O estranho é que não entra na área de swap quando o out of memory ocorre,* >> > > Onde você viu esse out-of-memory? Log? Tem a mensagem exata? > Pelo que você tem falado, não parece ter havido consumo de sua memória RAM > toda. > > Concordo com o Gurgel. Qual o erro exato que você está vendo? Ainda, quanto de swap você tem? Certeza que está ativo? Por favor, poste o resultado do comando: $ free -m Você ainda poderá ter problema de performance (ou não), mas se >> out-of-memory for uma situação com baixa frequência, então isso >> resolveria. >> *Não resolveu. temos que reiniciar os serviços várias vezes durante o dia* >> > > Faço a mesma pergunta acima. > > > É difícil determinar com certeza, mas pelas médias, vários desses >> arquivos estão com menos de 2MB, logo um work_mem de 6MB já poderia >> evitar boa parte desses. >> >> Como temos memória suficiente, iria sugerir 10MB, pra evitar ao máximo o >> uso de disco, fora que não temos tantas transações simultâneas. >> Eu acho que 6MB de work_mem >> > > Como eu já tinha dito, olhando por cima recomendaria 10MB. Ainda mais agora que sei que a máquina tem 32GB (diria até mais). E mais, qual o valor do shared_buffers? Aliás, de preferência o valor de todas variáveis não padrões, poste o resultado da consulta [1]. > Lembrando que o ajuste de work_mem não depende de reinício do servidor. > Você pode fazer a alteração no conf e dar um reload. > Você também pode fazer para o usuário da aplicação: > ALTER USER blabla SET work_mem='10MB'; > > Isso mesmo... =D > Lembre-se que apenas as novas conexões irão se aproveitar disso, as já > existentes irão ficar com o valor anterior (em ambos os casos de ajuste), > portanto, como sua aplicação é Java com Hibernate provavelmente tem um pool > que mantem as conexões abertas, seria legal reiniciar o servidor de > aplicação ou forçar as conexões a serem encerradas com pg_terminate_backend > (o pool abre de novo logo após). > > Não precisa disso, o work_mem irá ser alterado nas conexões abertas também. Claro que não para as consultas já em progresso. [1] http://wiki.postgresql.org/wiki/Server_Configuration Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral