Olá, Gutemberg

2009/8/13 Gutemberg Sarlo - Hotmail <gutembergsco...@hotmail.com>

> Pessoal, bom dia!
>
> Estou com alguns problemas e dificuldade em identificar causas momentanias
> de lentidão do banco, penso que talvez seja alguma coisa ligada as
> configurações do banco e semafaros do Linux, gostaria da experiência de
> vocês para orientação para tentar chegar numa configuração mais equalizada
> a
> demanda e equipamento.


Você está monitorando o banco e o SO utilizando ferramentas como o sar,
iostat, vmstat e top. Através destas ferramentas é possível analisar como
está a memória, se ocorre um uso excessivo de memória virtual, como está a
cpu e o acesso ao disco.

Ao mesmo tempo que você monitora isso você está fazendo uso das views
pg_stat_activity para ver que operações estão sendo executados no momento
que você identifica que o sistema está apresentendo sinais de lentidão? Você
também pode usar a view pg_locks para observar quais os locks existentes em
seu banco.

>
>
> Demanda pesada de consultas e transações de manutenção, aplicação web (30%)
> e client Server (70%). O Vacuum é executado toda madrugada automaticamente
> via script: su root -c "vacuumdb -U $vU -h $vH -z -f -v -d $vB" >>
> /home/postgresql/logs/vacuumdb2.txt


Você comentou aqui do Vacuum. O Vacuum full você executa com uma certa
periodicidade? Se você tiver uma boa configuraçãode max_fsm_pages o vacuum
tem um periodicidade de execução menor. Você tem o autovacuum habilitado?

>
>
> Dell PowerEdge 1800 Xeon 8GB - HD scsi (dedicado)
> OpenSuse 10.3
> Postgresql 8.2.4
>
>
> ============================================================================
> ==
> Sysctl.conf
>
> ============================================================================
> ==
> kernel.shmall = 2147483648
> kernel.shmmax = 2147483648
> kernel.shmmni = 309329920
>
> kernel.sem = 250 32000 100 128
> #kernel.disable_cap_mlock = 1
>
> fs.file-max = 65536
>
> #net.ipv4.ip_local_port_range = 1024 65000
> #net.core.rmem_default = 16777216 #1048576
> #net.core.rmem_max = 16777216     #1048576
> #net.core.wmem_default = 16777216 #262144
> net.core.wmem_max = 16777216      #262144
>
> vm.overcommit_memory = 2
> vm.overcommit_ratio  = 70
>
>
> ============================================================================
> ==
> Postgresql.conf
>
> ============================================================================
> ==
> max_connections = 220                   # (change requires restart)
> shared_buffers = 1024MB                 # min 128kB or max_connections*16kB
> max_prepared_transactions = 3           # can be 0 or more
> work_mem = 512MB                        # min 64kB
> maintenance_work_mem = 1024MB           # min 1MB
> max_fsm_pages = 204800                  # min max_fsm_relations*16, 6 bytes
> each
> vacuum_cost_delay = 100                 # 0-1000 milliseconds //GS 200
> fsync = on                              # turns forced synchronization on
> or
> off
> wal_sync_method = fsync                 # the default is the first option
> full_page_writes = on                   # recover from partial page writes
> wal_buffers = 128kB                     # min 32kB
> commit_delay = 500                      # range 0-100000, in microseconds
> //GS 1000
> commit_siblings = 5                     # range 1-1000
> checkpoint_segments = 32                # in logfile segments, min 1, 16MB
> each //GS 8
> checkpoint_timeout = 5min               # range 30s-1h
> checkpoint_warning = 30s                # 0 is off
>
> enable_bitmapscan = on
> enable_hashagg = on
> enable_hashjoin = on
> enable_indexscan = on
> enable_mergejoin = on
> enable_nestloop = on
> enable_seqscan = on
> enable_sort = on
> enable_tidscan = on
>
> random_page_cost = 2.0                  # same scale as above //GS 1 -
> antes
> 4.0
> effective_cache_size = 2GB
> stats_command_string = on
> update_process_title = on
> stats_start_collector = on              # needed for block or row stats
> stats_block_level = off
> stats_row_level = on
> autovacuum = off                        # enable autovacuum subprocess?
> deadlock_timeout = 1s
> max_locks_per_transaction = 64          # min 10
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>

Você observou se ao final da operação de vacuum verbose é apresenta uma
mensagem relativa ao parâmetro max_fsm_pages. É interessante dar uma olhada
nesta informação. Uma informação que não vi no seu arquivo de configuração é
a configuração do parâmetro max_fsm_relations.

Algumas coisas que me chamaram a atenção foi uma valor extremamente alto
para o parâmetro work_mem. Você sabe qual a utilização deste parâmetro?

Pelo que entendi seu banco é muito mais de leitura do que escrita. Estou
certo? Derrepente se isso for verdade derrepente poderia ser interessante
você fazer um aumento para 2GB no tamanho do seu shared_buffers. Outro
detalhe que você talvez não precise habiltar é o parâmetro commit_delay e
deixar o valor padrão 0, já que seu banco é muito mais leitura do que
operações de escrita.

Vi que você está com o autovacuum desabilitado. Existe algum motivo especial
para isso? Percebi também que o parâmetro stats_block_level está
desabilitado, é bastante recomendado que você habilite este parâmetro para
on, pois é através dele que você consegue ver informações de como estão as
leituras dos blocos do seu banco (pg_statio_user_indexes, pg_stat_database,
pg_statio_user_tables). Outro parâmetro que talvez pudesse ser modificado é
o effective_cache_size para algo em torno de 4GB. Você conhece a utilização
deste parâmetro? Você sabe também como estão a utilização dos seus índices.
Imagina que derrepente você tem um tabela bastante grande e uma leitura
sequencial esteja sendo feita nela, isso pode comprometer a performance do
seu sistema. Na view pg_stat_user_indexes você tem a informação se os seus
índices estão ou não sendo utilizados.


[]s
-- 
JotaComm
http://jotacomm.wordpress.com
http://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

Responder a