Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Olá Euler, Agradeço pelas observações, Realmente 100 transações é pouco. Na verdade me utilizei estes valores pois foram utilizados em outro benchmark que está publicado na Internet e precisava saber se a minha máquina estava melhor, semelhante ou pior ao do teste (felizmente ficou 6x melhor). - Mensagem original - De: Euler Taveira eu...@timbira.com.br Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Quarta-feira, 15 de Maio de 2013 15:57:01 Assunto: Re: [pgbr-geral] Configuração e Tunning Postgre 8.4 100 transações é um valor muito baixo; o teste será somente por alguns segundos. Uma alternativa é o utilizar o parâmetro -T (tempo) ao invés do parâmetro -t (número de transações). Um bom teste deve durar pelo menos 10 minutos. Além disso, *nunca* utilize um valor de conexões (-c) maior do que fator de escala (-s); vários UPDATEs estarão concorrendo pelas mesmas tuplas. -- !- Atenciosamente: Robson Massaki Kobayashi SSOP/COINF/STI - TRE/MS (67)3326-5428 ou (67)3326-4166 ramal 218 !- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Olá Euler, Fiquei curioso e executei o teste conforme suas dicas, realmente o desempenho caiu 3x. Segue abaixo o resultado do benchmark: #pgbench -h localhost -p 5432 -c 10 -T 600 -d pgbench transaction type: TPC-B (sort of) scaling factor: 10 query mode: simple number of clients: 10 number of threads: 1 duration: 600 s number of transactions actually processed: 123431 tps = 205.709853 (including connections establishing) tps = 205.716761 (excluding connections establishing) Bom, fica de parâmetro para quem tiver utilizando máquina virtual (vmware). Em máquina física, o resultado deve ser bem melhor. - Mensagem original - De: Robson Kobayashi - TRE/MS robson.kobaya...@tre-ms.jus.br Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Quinta-feira, 16 de Maio de 2013 12:56:58 Assunto: Re: [pgbr-geral] Configuração e Tunning Postgre 8.4 Olá Euler, Agradeço pelas observações, Realmente 100 transações é pouco. Na verdade me utilizei estes valores pois foram utilizados em outro benchmark que está publicado na Internet e precisava saber se a minha máquina estava melhor, semelhante ou pior ao do teste (felizmente ficou 6x melhor). -- !- Atenciosamente: Robson Massaki Kobayashi SSOP/COINF/STI - TRE/MS (67)3326-5428 ou (67)3326-4166 ramal 218 !- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Não entendi porque não chegou no email. Algo de errado? Em 14 de maio de 2013 17:23, Filho Arrais kuruminbra...@gmail.comescreveu: Olá pessoal, Utilizamos um sistema que tem como base de dados o PostreSQL 8.4. Migrei para um novo servidor, por falta de tempo e conhecimento, utilizei o mesmo postrgresql.conf Gostaria de discutir com os senhores que tem mais conhecimento, sobretudo em ambientes reais de produção, quais ajustes podem ser realizados no PostgreSQL e se os atuais parâmetros estão aceitáveis para o nosso cenário. Estou com a seguinte configuração. Dois Processadores Intel Xeon E5-2650 0 2.00GHz ( total de 32 core) 24 GB de memória RAM 8 Discos SAS 15k com dois grupos de RAID10 ( primeiro Raid10 pro sistema operacional e PG_XLOG em partições distintas, segundo Raid10 unicamente pro PGDATA) Sistema Operacional: Ubuntu Server 13.04 Kernel: 3.8.0-19-generic Sistema de arquivo: EXT4 PostgreSQL: 8.4.17 A quantidade de usuários do sistema é de 180, porém o número de conexões simultâneas está por volta de 200. Logo abaixo, segue as configurações do postgresql.conf e sysctl.conf == postgresql.conf listen_addresses = '*' port = 5432 max_connections = 300 shared_buffers = 6144MB temp_buffers = 64MB work_mem = 96MB maintenance_work_mem = 70MB fsync = on full_page_writes = on wal_buffers = 2048kB checkpoint_segments = 48 checkpoint_timeout = 45min effective_cache_size = 5461MB log_filename = 'postgresql-%a.log' log_line_prefix = '[ %u@%h %d - %t ] ' autovacuum_max_workers = 3 autovacuum_naptime = 40min datestyle = 'iso, dmy' client_encoding = LATIN1 lc_messages = 'C' lc_monetary = 'pt_BR.UTF-8' lc_numeric = 'pt_BR.UTF-8' lc_time = 'pt_BR.UTF-8' default_text_search_config = 'pg_catalog.portuguese' deadlock_timeout = 3s add_missing_from = on default_with_oids = on escape_string_warning = off Tive olhando no wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Serverque o shared_buffers pode receber 1/4 da memoria (dependendo do ambiente), por isso esse valor de 6144 MB === No sysctl.conf kernel.shmmax = 16823421610 kernel.shmall = 16823421610 De acordo com o manual do ERP, o cálculo desse valor seria: kernel.shmmax = TOTAL_RAM_EM_BYTES / 3 * 2 kernel.shmall= TOTAL_RAM_EM_BYTES / 3 * 2 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Em 15-05-2013 09:42, Filho Arrais escreveu: Não entendi porque não chegou no email. Algo de errado? O e-mail chegou sim. O que está errado é que você quer uma configuração genérica e isso não existe. Podemos tentar ajudar um pouco aqui, mas tuning assim é melhor você ler mais e aprender um pouco. São centenas de variáveis e cenários. Não há fórmula mágica. Seu sistema está com algum tipo de lentidão identificada? Utilizamos um sistema que tem como base de dados o PostreSQL 8.4. Migrei para um novo servidor, por falta de tempo e conhecimento, utilizei o mesmo postrgresql.conf Gostaria de discutir com os senhores que tem mais conhecimento, sobretudo em ambientes reais de produção, quais ajustes podem ser realizados no PostgreSQL e se os atuais parâmetros estão aceitáveis para o nosso cenário. Estou com a seguinte configuração. Dois Processadores Intel Xeon E5-2650 0 2.00GHz ( total de 32 core) 24 GB de memória RAM 8 Discos SAS 15k com dois grupos de RAID10 ( primeiro Raid10 pro sistema operacional e PG_XLOG em partições distintas, segundo Raid10 unicamente pro PGDATA) Você fez mais ou menos certo. O ideal seria que o disco (ou RAID) pro pg_xlog fosse só pra ele. O S.O. você pode colocar num SATA, por exemplo. Sistema Operacional: Ubuntu Server 13.04 Kernel: 3.8.0-19-generic Sistema de arquivo: EXT4 PostgreSQL: 8.4.17 Bom. Atualizado na série. A quantidade de usuários do sistema é de 180, porém o número de conexões simultâneas está por volta de 200. Considere usar um pool como o PgBouncer. Seu sistema é feito em que linguagem? Logo abaixo, segue as configurações do postgresql.conf e sysctl.conf == postgresql.conf listen_addresses = '*' port = 5432 max_connections = 300 Vide pergunta acima. shared_buffers = 6144MB Muito. Seu sistema faz o que? Que tipo de carga? temp_buffers = 64MB work_mem = 96MB Não dá pra precisar aqui porque você usa este valor. maintenance_work_mem = 70MB Aqui também não. Qual o tamanho de suas tabelas? fsync = on full_page_writes = on wal_buffers = 2048kB Qual o wal_sync_method? checkpoint_segments = 48 checkpoint_timeout = 45min Furado. 45 minutos é um exagero tremendo. Procure ficar na faixa dos 5 minutos e ajustar checkpoint_segments para mais. Considere logar os checkpoints para saber se estão começando por tempo ou falta de segmentos e depois ajuste o valor. effective_cache_size = 5461MB Coloque aqui sua memória RAM + eventuais caches de disco da controladora. log_filename = 'postgresql-%a.log' log_line_prefix = '[ %u@%h %d - %t ] ' autovacuum_max_workers = 3 Pode ser necessário mais. Considere log_autovacuum = 0 para saber o que acontece com seu banco. autovacuum_naptime = 40min Isto é um erro brutal. Volte pros 60s default. datestyle = 'iso, dmy' client_encoding = LATIN1 lc_messages = 'C' lc_monetary = 'pt_BR.UTF-8' lc_numeric = 'pt_BR.UTF-8' lc_time = 'pt_BR.UTF-8' default_text_search_config = 'pg_catalog.portuguese' Isto aqui depende só de sua aplicação e não tem relaço com desempenho. deadlock_timeout = 3s Por quê? add_missing_from = on Sua aplicação é ruim? default_with_oids = on Sua aplicação foi feita para PostgreSQL 7.4 ou anterior? escape_string_warning = off Tive olhando no wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server que o shared_buffers pode receber 1/4 da memoria (dependendo do ambiente), por isso esse valor de 6144 MB Muito. Considere no máximo 4GiB para sistemas comuns. Mais só em caso muito especiais e menos se seu sistema for mais de relatórios e menos OLTP. === No sysctl.conf kernel.shmmax = 16823421610 Só depende de seu shared_buffers, precisa ser maior que ele e só. kernel.shmall = 16823421610 Sem influência neste caso. De acordo com o manual do ERP, o cálculo desse valor seria: kernel.shmmax = TOTAL_RAM_EM_BYTES / 3 * 2 kernel.shmall= TOTAL_RAM_EM_BYTES / 3 * 2 Tudo completamente errado. Veja o que escrevi acima. Acho que você precisa ler bastante. []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Em 15 de maio de 2013 10:02, Flavio Henrique Araque Gurgel fla...@4linux.com.br escreveu: Em 15-05-2013 09:42, Filho Arrais escreveu: Não entendi porque não chegou no email. Algo de errado? O e-mail chegou sim. E que pra mim não tinha chegado, desculpem-me. O que está errado é que você quer uma configuração genérica e isso não existe. Podemos tentar ajudar um pouco aqui, mas tuning assim é melhor você ler mais e aprender um pouco. São centenas de variáveis e cenários. Não há fórmula mágica. Seu sistema está com algum tipo de lentidão identificada? Com o passar das horas, ele perde um pouco do rendimento, vou chutar ai uns 10% na hora de retorna as informações solicitadas. Utilizamos um sistema que tem como base de dados o PostreSQL 8.4. Migrei para um novo servidor, por falta de tempo e conhecimento, utilizei o mesmo postrgresql.conf Gostaria de discutir com os senhores que tem mais conhecimento, sobretudo em ambientes reais de produção, quais ajustes podem ser realizados no PostgreSQL e se os atuais parâmetros estão aceitáveis para o nosso cenário. Estou com a seguinte configuração. Dois Processadores Intel Xeon E5-2650 0 2.00GHz ( total de 32 core) 24 GB de memória RAM 8 Discos SAS 15k com dois grupos de RAID10 ( primeiro Raid10 pro sistema operacional e PG_XLOG em partições distintas, segundo Raid10 unicamente pro PGDATA) Você fez mais ou menos certo. O ideal seria que o disco (ou RAID) pro pg_xlog fosse só pra ele. O S.O. você pode colocar num SATA, por exemplo. OK. Sistema Operacional: Ubuntu Server 13.04 Kernel: 3.8.0-19-generic Sistema de arquivo: EXT4 PostgreSQL: 8.4.17 Bom. Atualizado na série. OK A quantidade de usuários do sistema é de 180, porém o número de conexões simultâneas está por volta de 200. Considere usar um pool como o PgBouncer. Seu sistema é feito em que linguagem? Irei pesquisar o PgBouncer. O sistema é feito em WinDev. Logo abaixo, segue as configurações do postgresql.conf e sysctl.conf ==**==** == postgresql.conf listen_addresses = '*' port = 5432 max_connections = 300 Vide pergunta acima. shared_buffers = 6144MB Muito. Seu sistema faz o que? Que tipo de carga? É um sistema para transportadora. Faz toda a parte de Gestão Corporativa. Gestão de Frotas, Contabilidade, Sped Contábil, Fiscal e FCont, CT-e, NF-e, Intregração com sistema de rastreamento de veículos. temp_buffers = 64MB work_mem = 96MB Não dá pra precisar aqui porque você usa este valor. maintenance_work_mem = 70MB Aqui também não. Qual o tamanho de suas tabelas? As 10 maiores são essas, no total a base ultrapassa 30 GB 1 3676 MB 2 3623 MB 3 3147 MB 4 2253 MB 5 2108 MB 6 1598 MB 7 1159 MB 8 906 MB 9 692 MB 10 614 MB fsync = on full_page_writes = on wal_buffers = 2048kB Qual o wal_sync_method? Esse parâmetro não está sendo utilizado. checkpoint_segments = 48 checkpoint_timeout = 45min Furado. 45 minutos é um exagero tremendo. Procure ficar na faixa dos 5 minutos e ajustar checkpoint_segments para mais. Considere logar os checkpoints para saber se estão começando por tempo ou falta de segmentos e depois ajuste o valor. effective_cache_size = 5461MB Coloque aqui sua memória RAM + eventuais caches de disco da controladora. log_filename = 'postgresql-%a.log' log_line_prefix = '[ %u@%h %d - %t ] ' autovacuum_max_workers = 3 Pode ser necessário mais. Considere log_autovacuum = 0 para saber o que acontece com seu banco. autovacuum_naptime = 40min Isto é um erro brutal. Volte pros 60s default. datestyle = 'iso, dmy' client_encoding = LATIN1 lc_messages = 'C' lc_monetary = 'pt_BR.UTF-8' lc_numeric = 'pt_BR.UTF-8' lc_time = 'pt_BR.UTF-8' default_text_search_config = 'pg_catalog.portuguese' Isto aqui depende só de sua aplicação e não tem relaço com desempenho. Essa parte eu poderia ter omitido, perdão. deadlock_timeout = 3s Por quê? Também não sei o porque desse valor. add_missing_from = on Sua aplicação é ruim? Não é ruim, também não é das melhores. Temos um servidor aplicação onde utilizamos um atalho nas máquinas, porém a conexão com o banco é feita via ODBC. default_with_oids = on Sua aplicação foi feita para PostgreSQL 7.4 ou anterior? Essa informação eu não sei, suspeito que tenha sida projeta a partir do PostreSQL 8.2.3 escape_string_warning = off Tive olhando no wiki.postgresql.org/wiki/**Tuning_Your_PostgreSQL_Serverhttp://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server http://wiki.postgresql.org/**wiki/Tuning_Your_PostgreSQL_**Serverhttp://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server que o
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
Olá Filho, Não sou nenhum expert, mas no caso do SO, melhor vc utilizar as versões LTS do Ubuntu (10.04, 12.04). Vc já usou o pgbench? Não é a melhor ferramenta para benchmark, mas só para ter uma idéia, aqui em uma máquina virtual com 2vCPU e 2GB de RAM consegui em média 590 tps. Criação do banco de testes ./createdb -U postgres pgbench Criação das tabelas e população do banco ./pgbench -i -h localhost -p 5432 -s 10 -U postgres -d pgbench Teste propriamente dito: ./pgbench -h localhost -p 5432 -c 50 -t 100 -U postgres -d pgbench Remoção do banco de testes ./dropdb -U postgres pgbench Novamente informo que não sou nenhum expert, começei agora com o Postgre, mas serve como parâmetro (se sua máquina física com configuração bem melhor não conseguir esses tps, alguma coisa está errada com seu DB. Abraços - Mensagem original - De: Filho Arrais kuruminbra...@gmail.com Para: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br Enviadas: Terça-feira, 14 de Maio de 2013 16:23:05 Assunto: [pgbr-geral] Configuração e Tunning Postgre 8.4 Olá pessoal, Utilizamos um sistema que tem como base de dados o PostreSQL 8.4. Migrei para um novo servidor, por falta de tempo e conhecimento, utilizei o mesmo postrgresql.conf Gostaria de discutir com os senhores que tem mais conhecimento, sobretudo em ambientes reais de produção, quais ajustes podem ser realizados no PostgreSQL e se os atuais parâmetros estão aceitáveis para o nosso cenário. Estou com a seguinte configuração. Dois Processadores Intel Xeon E5-2650 0 2.00GHz ( total de 32 core) 24 GB de memória RAM 8 Discos SAS 15k com dois grupos de RAID10 ( primeiro Raid10 pro sistema operacional e PG_XLOG em partições distintas, segundo Raid10 unicamente pro PGDATA) Sistema Operacional: Ubuntu Server 13.04 Kernel: 3.8.0-19-generic Sistema de arquivo: EXT4 PostgreSQL: 8.4.17 A quantidade de usuários do sistema é de 180, porém o número de conexões simultâneas está por volta de 200. Logo abaixo, segue as configurações do postgresql.conf e sysctl.conf == postgresql.conf listen_addresses = '*' port = 5432 max_connections = 300 shared_buffers = 6144MB temp_buffers = 64MB work_mem = 96MB maintenance_work_mem = 70MB fsync = on full_page_writes = on wal_buffers = 2048kB checkpoint_segments = 48 checkpoint_timeout = 45min effective_cache_size = 5461MB log_filename = 'postgresql-%a.log' log_line_prefix = '[ %u@%h %d - %t ] ' autovacuum_max_workers = 3 autovacuum_naptime = 40min datestyle = 'iso, dmy' client_encoding = LATIN1 lc_messages = 'C' lc_monetary = 'pt_BR.UTF-8' lc_numeric = 'pt_BR.UTF-8' lc_time = 'pt_BR.UTF-8' default_text_search_config = 'pg_catalog.portuguese' deadlock_timeout = 3s add_missing_from = on default_with_oids = on escape_string_warning = off Tive olhando no wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server que o shared_buffers pode receber 1/4 da memoria (dependendo do ambiente), por isso esse valor de 6144 MB === No sysctl.conf kernel.shmmax = 16823421610 kernel.shmall = 16823421610 De acordo com o manual do ERP, o cálculo desse valor seria: kernel.shmmax = TOTAL_RAM_EM_BYTES / 3 * 2 kernel.shmall = TOTAL_RAM_EM_BYTES / 3 * 2 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- !- Atenciosamente: Robson Massaki Kobayashi SSOP/COINF/STI - TRE/MS (67)3326-5428 ou (67)3326-4166 ramal 218 !- ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração e Tunning Postgre 8.4
On 15-05-2013 15:08, Robson Kobayashi - TRE/MS wrote: Vc já usou o pgbench? Não é a melhor ferramenta para benchmark, mas só para ter uma idéia, aqui em uma máquina virtual com 2vCPU e 2GB de RAM consegui em média 590 tps. Criação do banco de testes ./createdb -U postgres pgbench Criação das tabelas e população do banco ./pgbench -i -h localhost -p 5432 -s 10 -U postgres -d pgbench Teste propriamente dito: ./pgbench -h localhost -p 5432 -c 50 -t 100 -U postgres -d pgbench Remoção do banco de testes ./dropdb -U postgres pgbench 100 transações é um valor muito baixo; o teste será somente por alguns segundos. Uma alternativa é o utilizar o parâmetro -T (tempo) ao invés do parâmetro -t (número de transações). Um bom teste deve durar pelo menos 10 minutos. Além disso, *nunca* utilize um valor de conexões (-c) maior do que fator de escala (-s); vários UPDATEs estarão concorrendo pelas mesmas tuplas. -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Configuração e Tunning Postgre 8.4
Olá pessoal, Utilizamos um sistema que tem como base de dados o PostreSQL 8.4. Migrei para um novo servidor, por falta de tempo e conhecimento, utilizei o mesmo postrgresql.conf Gostaria de discutir com os senhores que tem mais conhecimento, sobretudo em ambientes reais de produção, quais ajustes podem ser realizados no PostgreSQL e se os atuais parâmetros estão aceitáveis para o nosso cenário. Estou com a seguinte configuração. Dois Processadores Intel Xeon E5-2650 0 2.00GHz ( total de 32 core) 24 GB de memória RAM 8 Discos SAS 15k com dois grupos de RAID10 ( primeiro Raid10 pro sistema operacional e PG_XLOG em partições distintas, segundo Raid10 unicamente pro PGDATA) Sistema Operacional: Ubuntu Server 13.04 Kernel: 3.8.0-19-generic Sistema de arquivo: EXT4 PostgreSQL: 8.4.17 A quantidade de usuários do sistema é de 180, porém o número de conexões simultâneas está por volta de 200. Logo abaixo, segue as configurações do postgresql.conf e sysctl.conf == postgresql.conf listen_addresses = '*' port = 5432 max_connections = 300 shared_buffers = 6144MB temp_buffers = 64MB work_mem = 96MB maintenance_work_mem = 70MB fsync = on full_page_writes = on wal_buffers = 2048kB checkpoint_segments = 48 checkpoint_timeout = 45min effective_cache_size = 5461MB log_filename = 'postgresql-%a.log' log_line_prefix = '[ %u@%h %d - %t ] ' autovacuum_max_workers = 3 autovacuum_naptime = 40min datestyle = 'iso, dmy' client_encoding = LATIN1 lc_messages = 'C' lc_monetary = 'pt_BR.UTF-8' lc_numeric = 'pt_BR.UTF-8' lc_time = 'pt_BR.UTF-8' default_text_search_config = 'pg_catalog.portuguese' deadlock_timeout = 3s add_missing_from = on default_with_oids = on escape_string_warning = off Tive olhando no wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server que o shared_buffers pode receber 1/4 da memoria (dependendo do ambiente), por isso esse valor de 6144 MB === No sysctl.conf kernel.shmmax = 16823421610 kernel.shmall = 16823421610 De acordo com o manual do ERP, o cálculo desse valor seria: kernel.shmmax = TOTAL_RAM_EM_BYTES / 3 * 2 kernel.shmall= TOTAL_RAM_EM_BYTES / 3 * 2 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral