3. Servidor sentando - load average alto (Deliane Andrade)

Servidor de banco de dados ele tenta colocar toda a informação em mémoria
para poder ter um tempo de resposta mais eficiente.

O seu servidor esta utilizando um storage (disco) 1TB, ai vem as perguntas:
- há um array de discos para formar esse storage de um 1TB? Se sim qual o
nível RAID que você esta utilizando?
- você consegue analisar o IO de disco atual do seu servidor?
- As ferramentas PgFouine e pgbadger irão te auxiliar para fazer analise de
log e demonstrar quais as operações que esão levando maior tempo de
execução.

Mas o Load pode ter aumentando por causa do IO de disco. Utilize as
ferramentas que citei no ultimo ítem você poderá verificar o que alterar no
arquivo postgresql.conf

Em 8 de fevereiro de 2013 11:48, <
[email protected]> escreveu:

> Send pgbr-geral mailing list submissions to
>         [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> or, via email, send a message with subject or body 'help' to
>         [email protected]
>
> You can reach the person managing the list at
>         [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of pgbr-geral digest..."
>
>
> Tópicos de Hoje:
>
>    1. ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS, UPDATES
>       (Wellington Openheimer)
>    2. Re: ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS, UPDATES
>       (Jean Pereira)
>    3. Servidor sentando - load average alto (Deliane Andrade)
>    4. Function atualiza valor com nulo (Edson - Lista)
>    5. Re: Function atualiza valor com nulo (Wolak)
>    6. Re: Servidor sentando - load average alto (Euler Taveira)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Fri, 8 Feb 2013 09:47:09 -0200
> From: Wellington Openheimer <[email protected]>
> Subject: [pgbr-geral] ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS,
>         UPDATES
> To: [email protected]
> Message-ID:
>         <CAMXtFXECBNQjsoncuJA67KbJJV4NZsG3p1ctDU=
> [email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Olá pessoal,
>
> Temos uma tabela que em um determinado tempo ela é muito consultada e ao
> mesmo tempo sofre muitos inserts e updates.
>
> Acontece que a consulta é bem complexa e está ficando cada vez mais lenta
> com o aumento do número de dados.
>
> Decidimos então testar a criação de uns índices com os principais campos
> nas cláusulas WHERE das consultas mais lentas.
>
> A consulta ficou bem mais rápida, mas estamos receosos se estes índices
> irão deixar mais lenta a inserção e update de dados
> pois esses comandos teriam então que inserir no índice também.
>
>
> Obs.:
>
> Criamos 2 índices compostos btree.
>  (campo1, campo2, campo3)
>  (campo4, campo2, campo3)
>
> campo2 e campo3 fazem parte da chave da tabela que possui 5 campos chave.
>
> Detalhe: temos 2 consultas muito pesadas que usam no where campo1, campo2 e
> campo3 e campo4, campo2 e campo3 respectivamente.
>
>
> Seremos muito grato se puderem nos ajudar.
>
>
> att,
>
> Wellington
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/bcdef8f0/attachment-0001.htm
>
> ------------------------------
>
> Message: 2
> Date: Fri, 08 Feb 2013 10:23:53 -0200
> From: Jean Pereira <[email protected]>
> Subject: Re: [pgbr-geral] ÍNDICES EM TABELAS QUE RECEBEM MUITOS
>         INSERTS, UPDATES
> To: Comunidade PostgreSQL Brasileira
>         <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Bom dia.
>
> Bom, tenho uma situação muito parecida por aqui.
> Temos um banco de dados que nasceu no access a muitos e muitos anos
> atrás, foi para sqlserver e a muitos anos está no postgresql.
>
> Trabalhamos com sistema de saúde publica, e nossas tabelas de produção
> (digo os dados de procedimentos executados e tal), são uma "porcaria", e
> para alterar essas tabelas é o "bixo".
>
> Minha solução foi adotar esses índices pelo qual você referiu, mas eu
> não sei essa informação também.
> Mas, pelo que constatamos por aqui, a melhora foi muito significativa, e
> até agora não detectamos problemas perante aos índices.
>
> Abraço.
>
> On 02/08/2013 09:47, Wellington Openheimer wrote:
> > Olá pessoal,
> >
> > Temos uma tabela que em um determinado tempo ela é muito consultada e
> > ao mesmo tempo sofre muitos inserts e updates.
> >
> > Acontece que a consulta é bem complexa e está ficando cada vez mais
> > lenta com o aumento do número de dados.
> >
> > Decidimos então testar a criação de uns índices com os principais
> > campos nas cláusulas WHERE das consultas mais lentas.
> >
> > A consulta ficou bem mais rápida, mas estamos receosos se estes
> > índices irão deixar mais lenta a inserção e update de dados
> > pois esses comandos teriam então que inserir no índice também.
> >
> >
> > Obs.:
> >
> > Criamos 2 índices compostos btree.
> >  (campo1, campo2, campo3)
> >  (campo4, campo2, campo3)
> >
> > campo2 e campo3 fazem parte da chave da tabela que possui 5 campos chave.
> >
> > Detalhe: temos 2 consultas muito pesadas que usam no where campo1,
> > campo2 e campo3 e campo4, campo2 e campo3 respectivamente.
> >
> >
> > Seremos muito grato se puderem nos ajudar.
> >
> >
> > att,
> >
> > Wellington
> >
> >
> >
> > _______________________________________________
> > pgbr-geral mailing list
> > [email protected]
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/7d6552a8/attachment-0001.htm
>
> ------------------------------
>
> Message: 3
> Date: Fri, 8 Feb 2013 09:27:57 -0300
> From: Deliane Andrade <[email protected]>
> Subject: [pgbr-geral] Servidor sentando - load average alto
> To: Comunidade PostgreSQL Brasileira
>         <[email protected]>
> Message-ID:
>         <
> caoa7u111vnquamb0-vv-wnazhgdnwjyiy93zdhk7fhyivuc...@mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Bom dia pessoal!
> Estamos com problema em um servidor Xenon de 16 núcleos com 16G de RAM. HD
> SATA DE 1T.
> O postgresql é o 8.4.4
>
>
> O load average da máquina está da forma abaixo(sendo que já chegou até a
> 300) :
>
> top - 09:20:09 up 2 days,  2:12,  6 users,  load average: 96.90, 116.55,
> 118.03
> Tasks: 488 total,   2 running, 486 sleeping,   0 stopped,   0 zombie
> Cpu(s):  3.2%us,  0.7%sy,  0.0%ni, 56.5%id, 39.7%wa,  0.0%hi,  0.0%si,
> 0.0%st
> Mem:  16458500k total, 14891364k used,  1567136k free,    19108k buffers
> Swap:  9765616k total,     8208k used,  9757408k free, 13512336k cached
>
> A configuração do postgresql.conf atual é a seguinte: (sendo que mudaram a
> mesma aleatoriamente)
>
> listen_addresses = '*'                  # what IP address(es) to listen on;
>                                                    # comma-separated list
> of addresses;
>                                                    # defaults to
> 'localhost', '*' = all
>                                                   # (change requires
> restart)
> port = 5432                                # (change requires restart)
> max_connections = 900             # (change requires restart)
>
> shared_buffers = 512000kB
> work_mem=15729kB
> maintenance_work_mem = 2GB
> wal_buffers = 64kB
> checkpoint_segments =300
> effective_cache_size = 14680060kB
>
> Esse servidor é acessado por três aplicações diferentes que executam muitas
> consultas e updates , e alguns poucos deletes.
> A base encontra-se hoje com 83G de tamanho.
> Já rodei o vacuum full.
> Já fizeram o reindex.
> Enfim, os sistemas estão muito lentos, quase parando.
> Alguém tem alguma sugestão de alteração na configuração para que a
> performance melhore?
>
> Att,
>   Deliane Andrade
> -------------- Próxima Parte ----------
> Um anexo em HTML foi limpo...
> URL:
> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/f70b4ac7/attachment-0001.htm
>
> ------------------------------
>
> Message: 4
> Date: Fri, 08 Feb 2013 10:52:03 -0200
> From: Edson - Lista <[email protected]>
> Subject: [pgbr-geral] Function atualiza valor com nulo
> To: [email protected]
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
> Bom dia pessoal,
>
> Não sei que esta errado com a minha function, ao fazer o update ela
> atualizando os valor com null.
> O que pode estar errado?,
> Segue abaixo:
>
> CREATE OR REPLACE FUNCTION public.baixa_saldo_conta_pagar (
> )
> RETURNS trigger AS
> $body$
>       BEGIN
>          IF (TG_OP = 'INSERT') THEN
>             UPDATE contas SET
>             vlr_saldo_sai = (vlr_saldo_sai + NEW.vlr_pgto),
>             vlr_saldo = (vlr_saldo - NEW.vlr_pgto),
>             dt_usualt = now(),
>             nm_usualt = new.nm_usualt
>             WHERE cd_conta = NEW.cd_conta;
>             RETURN NEW;
>          END IF;
>        IF (TG_OP = 'UPDATE') THEN
>            UPDATE contas
>            SET vlr_saldo_sai = ((vlr_saldo_sai - OLD.vlr_pgto) +
> NEW.vlr_pgto),
>            vlr_saldo = ((vlr_saldo + OLD.vlr_pgto) - NEW.vlr_pgto),
>            nm_usualt = new.nm_usualt
>            WHERE cd_conta = NEW.cd_conta;
>            RETURN NEW;
>        END IF;
>        IF (TG_OP = 'DELETE') THEN
>            UPDATE contas
>          set vlr_saldo_sai = (vlr_saldo_sai - OLD.vlr_pgto),
>                  vlr_saldo = (vlr_saldo + OLD.vlr_pgto),
>                  dt_usualt = OLD.dt_usualt,
>                  nm_usualt = OLD.nm_usualt
>              where cd_conta = OLD.cd_conta;
>              RETURN OLD;
>        END IF;
>       END;
> $body$
> LANGUAGE 'plpgsql'
> VOLATILE
> CALLED ON NULL INPUT
> SECURITY INVOKER
> COST 100;
>
> []'s
>
> Edson
>
>
> ------------------------------
>
> Message: 5
> Date: Fri, 08 Feb 2013 11:23:18 -0200
> From: Wolak <[email protected]>
> Subject: Re: [pgbr-geral] Function atualiza valor com nulo
> To: Comunidade PostgreSQL Brasileira
>         <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>
>
> Em 08/02/2013 10:52, Edson - Lista escreveu:
> > Bom dia pessoal,
> >
> > Não sei que esta errado com a minha function, ao fazer o update ela
> > atualizando os valor com null.
> > O que pode estar errado?,
> > Segue abaixo:
> >
> > CREATE OR REPLACE FUNCTION public.baixa_saldo_conta_pagar (
> > )
> > RETURNS trigger AS
> > $body$
> >        BEGIN
> >           IF (TG_OP = 'INSERT') THEN
> >              UPDATE contas SET
> >              vlr_saldo_sai = (vlr_saldo_sai + NEW.vlr_pgto),
> >              vlr_saldo = (vlr_saldo - NEW.vlr_pgto),
> >              dt_usualt = now(),
> >              nm_usualt = new.nm_usualt
> >              WHERE cd_conta = NEW.cd_conta;
> >              RETURN NEW;
> >           END IF;
> >         IF (TG_OP = 'UPDATE') THEN
> >             UPDATE contas
> >             SET vlr_saldo_sai = ((vlr_saldo_sai - OLD.vlr_pgto) +
> > NEW.vlr_pgto),
> >             vlr_saldo = ((vlr_saldo + OLD.vlr_pgto) - NEW.vlr_pgto),
> >             nm_usualt = new.nm_usualt
> >             WHERE cd_conta = NEW.cd_conta;
> >             RETURN NEW;
> >         END IF;
> >         IF (TG_OP = 'DELETE') THEN
> >             UPDATE contas
> >           set vlr_saldo_sai = (vlr_saldo_sai - OLD.vlr_pgto),
> >                   vlr_saldo = (vlr_saldo + OLD.vlr_pgto),
> >                   dt_usualt = OLD.dt_usualt,
> >                   nm_usualt = OLD.nm_usualt
> >               where cd_conta = OLD.cd_conta;
> >               RETURN OLD;
> >         END IF;
> >        END;
> > $body$
> > LANGUAGE 'plpgsql'
> > VOLATILE
> > CALLED ON NULL INPUT
> > SECURITY INVOKER
> > COST 100;
> >
> > []'s
> >
> > Edson
> > _______________________________________________
> > pgbr-geral mailing list
> > [email protected]
> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
> >
>
> Provavelmente existe um valor nulo, utilize o COALESCE(vlr_saldo,0) +
> COALESCE(old.vlr_pgto,0).
>
>
>
>
> ------------------------------
>
> Message: 6
> Date: Fri, 08 Feb 2013 11:50:54 -0200
> From: Euler Taveira <[email protected]>
> Subject: Re: [pgbr-geral] Servidor sentando - load average alto
> To: Comunidade PostgreSQL Brasileira
>         <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1
>
> On 08-02-2013 10:27, Deliane Andrade wrote:
> > O postgresql é o 8.4.4
> >
> Atualize a versão (já estamos na 8.4.16) -- há inúmeras correções de bugs e
> segurança.
>
> > O load average da máquina está da forma abaixo(sendo que já chegou até a
> 300) :
> >
> > top - 09:20:09 up 2 days,  2:12,  6 users,  load average: 96.90, 116.55,
> 118.03
> > Tasks: 488 total,   2 running, 486 sleeping,   0 stopped,   0 zombie
> > Cpu(s):  3.2%us,  0.7%sy,  0.0%ni, 56.5%id, 39.7%wa,  0.0%hi,  0.0%si,
>  0.0%st
> >
>                                             ^^^^^^^^^^^
> Você precisa aumentar a capacidade de I/O de seu servidor.
>
> > max_connections = 900             # (change requires restart)
> >
> Valor muito alto.
>
> > shared_buffers = 512000kB
> valor muito baixo.
>
> > work_mem=15729kB
> > maintenance_work_mem = 2GB
> > wal_buffers = 64kB
> valor baixo.
>
> > checkpoint_segments =300
> valor alto.
>
> > Enfim, os sistemas estão muito lentos, quase parando.
> > Alguém tem alguma sugestão de alteração na configuração para que a
> performance
> > melhore?
> >
> Talvez você precise de uma consultoria para lhe indicar o que deve ser
> melhorado no servidor, no PostgreSQL e quais são as rotinas de manutenção
> adequadas.
>
>
> --
>    Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
>    PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>
>
> ------------------------------
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> Fim da Digest pgbr-geral, volume 50, assunto 10
> ***********************************************
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a