Olá,

Estou com algumas dúvidas sobre instalação e performance.

Tenho um servidor IBM System S-3560 quadcore com 6 discos SCSI,
esta máquina vai segurar o novo banco de produção daqui.

Coloquei 4 discos em RAID 10 + 1 disco para SPARE

O array do RAID 10 ficou com 293 GB.

Deixei um disco separado para backup (173 GB).

Instalei o Debian Lenny 64 bits (kernel 2.6.26.1-amd64) na máquina pois
acima de 4 GB de memória é recomendável usar 64bits correto?

Separei as partições da seguinte forma:

/boot
/
/pgsql/indices (pg_clog)
/pgsql/tabelas (base)
/pgsql/tablespaces
/pgsql/wal (pg_xlog)
/pgsql/archives (global)
/var
/var/log
/backup
swap

O servidor tem 8 GB de RAM, deixei 4 GB  de SWAP, acredito ser
suficiente.

Sistemas de arquivos:

/
> ext3 defauls

/pgsql/indices
> ext3 noatime,writeback

/pgsql/tabelas
> xfs noatime

/pgsql/wal 
> ext3 noatime,writeback

/pgsql/wal 
> ext3 noatime,writeback

/pgsql/archives
> ext3 noatime,writeback

/var
> ext3 defaults

/var/log
> ext3 defaults

Fiz isto, está assim, mas fico pensando se não seria melhor fazer 2
raids 10 ao invés de apenas 1, assim poderia separar fisicamente índices
e logs de transações das tabelas, será o mais indicado?

Ainda tenho tempo de mudar :)

Compilei o postgreSQL 8.2.9 (lá eles ainda usam o 8.2).

---

exemplo da compilação...

./configure --prefix=/opt/pgsql/8.3.4/ --enable-nls
--enable-integer-datetimes --enable-thread-safety --enable-debug
--disable-rpath --with-tcl --with-perl --with-python --with-pam
--with-krb5 --with-openssl --with-ldap --with-gnu-ld

criei o usuario postgres, criei o diretorio data e rodei o initdb.

depois movi tudo para as partições e criei links simbólicos no
diretório, espero que seja o procedimento correto, se não for
por favor me digam se tem um método mais eficiente ;)

---

Fiz os seguintes ajustes no sysctl.conf

kernel.shmmni = 128
kernel.shmmax = 2147483648
kernel.shmall = 33554432

vm.overcommit_memory = 2
fs.file-max = 65535
kernel.sem = 250 32000 100 128

net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216

---referências----------------------------------------

Maximum size of shared memory segment (bytes)
kernel.shmmax = 25% da minha memoria

Total amount of shared memory available (bytes or pages)
kernel.shmall = 25%/64

Maximum number of shared memory segments system-wide
kernel.shmmni = não tenho referencia do parametro ideal

net.core.rmem_default=65536 
This sets the default OS receive buffer size for all types of
connections.

net.core.wmem_default=65536 
This sets the default OS send buffer size for all types of connections.

net.core.rmem_max=8388608 
This sets the max OS receive buffer size for all types of connections.

net.core.wmem_max=8388608 
This sets the max OS send buffer size for all types of connections.

http://www.redhat.com/docs/manuals/database/RHDB-2.1-Manual/admin_user/kernel-resources.html
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/topic/com.ibm.mq.amq1ac.doc/lq10410_.htm
http://wwwx.cs.unc.edu/~sparkst/howto/network_tuning.php

http://www.midstorm.org/~telles/2008/07/25/postgresql-discos-cia/
http://www.midstorm.org/~telles/2007/12/18/acabou-o-espaco-em-disco/

Muitas dicas eu peguei diretamente nas...

...palestras do Bruce Monjian no Consegi 2008 em Brasília/DF.
...palestras do Fernando Ike no Consegi 2008 em Brasília/DF.

http://momjian.us/
http://www.midstorm.org/~fike

----------------------------------------------------------------

Mudando o I/O Scheduler dos discos...

echo “deadline” > /sys/block/sda/queue/scheduler

Isto é recomendável?

---

Fiz os seguinte ajustes nos limits.conf

postgres soft nofile 4096
postgres soft nproc  4096
postgres hard nofile 63536
postgres hard nproc  63536

---

Configurações do postgresql.conf

max_connections = 25

shared_buffers = 2703 MB
work_mem = 2048 MB

temp_buffers = 64 MB
maintenance_work_mem = 64 MB

max_fsm_pages = 150000 
max_fsm_relations = 250

wall_buffers = 256 KB

stats_start_collector = on
stats_row_level = on

autocacumm = on
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 500
autovacuum_analyze_threshold = 250
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.1
autovacuum_freeze_max_age = 200000000
autovacuum_vacuum_cost_delay = -1
autovacuum_vacuum_cost_limit = -1

Será que exagerei com as configurações de memória?

Em relação ao max_fsm ainda estou estudando como determinar as
necessidades do meu cenário.

Liguei o autovacuum, no 8.2 faz tanta diferença quanto no 8.3 ?

Espero estar no caminho certo ;)

Bom estou começando a estudar postgres, está será minha primeira
implementação para ambiente em produção e quero fazer direito, agradeço
se puderem me dar dicas e links para aprofundar os estudos ;)

Percebi uma lentidão ao criar bancos, 2 a 3 segundos, é normal?

Ainda estou analisando a lentidão, nem vou arriscar um chute no momento,
continuo estudando as documentações do postgresql.org :)

Valeu gente.

[]'s
Guto




Attachment: signature.asc
Description: Esta é uma parte de mensagem assinada digitalmente

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a