Boa tarde Daniel,

O tempo para chegar um arquivo do master para a replica é de milesegundos.
O envio do archive quando gravado no pg_xlog é enviado para a replica
instantaneamente.

O arquivo gerado no pg_xlog da master é recebido na replica e visto da
seguinte forma.

12819 postgres  20   0 35,692g   3572   1928 S   2,7  0,0  65:16.78
postgres: wal receiver process   streaming 8DF/7DD0000

Quanto ao tempo de atraso ele pode ser calculado da seguinte forma.

            SELECT (CASE WHEN pg_last_xlog_receive_location() =
pg_last_xlog_replay_location()
            THEN 0
            ELSE EXTRACT (EPOCH FROM now() -
pg_last_xact_replay_timestamp())
            END) AS log_delay;

Já a movimentação para o PG_XLOG é feita pelo proprio stream replication,
não havendo nenhuma configuração. O trafego destes arquivo para a replica é
feito atravez da configuração recovery.conf.

standby_mode       = 'on'
primary_slot_name  = 'slot'
primary_conninfo   = 'host=hostname port=5433 user=replication
trigger_file       = '/var/lib/pgsql/9.6/data/im_the_master

Att,

Em 30 de agosto de 2017 13:54, Daniel Luiz da Silva <daniel.si...@ipm.com.br
> escreveu:

>
> ------------------------------
> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br>
> *Para: *pgbr-geral@listas.postgresql.org.br
> *Enviadas: *Quarta-feira, 30 de agosto de 2017 12:09:56
> *Assunto: *[pgbr-geral] Lentidão na aplicação do Archive - Stream
> Replication
>
> Boa tarde a todos,
> Possuimos uma arquitetura na nuvem da Azure com duas maquinas de banco com
> a versão 9.6 do Postgres. Esta estrutura trabalha com uma maquina sendo o
> banco principal, e a outra sendo a replica deste banco. A replicação é de
> forma assincrona e via Stream Replication, utilizando um Slot para
> replicação.
>
> Ambas as maquinas possuem os mesmos recursos de hardware, e as mesmas
> otimizações em SO
>
>
> Disco: 17TB para database, sendo 9TB consumido. Disco é um RAID 0 de
> 17SSDs de 1TB
> 144 GB de memoria
> 20 nucleos de processamento
>
> A maquina principal tem otima performance, enviando os archives do pg_xlog
> em uma rede de banda maxima de 1,5GB/s. Identificamos que não existe
> problema e lentidão no envio e recebimento dos arquivos na replica.
> Entretando quando o postgres replicado inicia o processo de recovery destes
> archives demora um tempo muito elevado, estando em media 15 segundos para
> processar um archive. Isso esta causando uma diferença de dados entre os
> bancos muito elevada, fazendo desta forma que a replicação nunca finalize o
> processamento dos archives.
>
> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da
> replica.
>
> Gostaria de apoio para resolver este problema de lentidão no momento do
> recovery destes archives
>
> 12819 postgres  20   0 35.692g   3552   1908 S   9.3  0.0  57:05.46
> postgres: wal receiver process   streaming 8D8/A623D4B8
>
>
> 40604 postgres  20   0 35.686g   3184   1500 D   4.7  0.0  76:29.52
> postgres: startup process   recovering 000000010000088600000038
>
> Segue abaixo configuração do postgresql.conf da replica.
>
> listen_addresses = '*'
> port = 5433
> max_connections = 2000
> superuser_reserved_connections = 3
> shared_buffers = 35257MB
> work_mem = 18051kB
> maintenance_work_mem = 8GB
> #autovacuum_work_mem = 4GB
> max_stack_depth = 5MB
> dynamic_shared_memory_type = posix
> vacuum_cost_delay = 20
> vacuum_cost_limit = 200
> bgwriter_delay = 10ms
> bgwriter_lru_maxpages = 700
> bgwriter_lru_multiplier = 2.0
> fsync = off
> synchronous_commit = off
> full_page_writes = off
> wal_buffers = 16MB
> wal_writer_delay = 1ms
> checkpoint_timeout = 10min
> max_wal_size = 8GB
> min_wal_size = 4GB
> #checkpoint_completion_target = 0.9
> effective_cache_size = 105772MB
> default_statistics_target = 500
> log_destination = 'csvlog'
> logging_collector = off
> log_directory = 'pg_log'
> log_filename = 'postgresql-%w.log'
> log_file_mode = 0640
> log_truncate_on_rotation = on
> log_rotation_age = 1d
> log_rotation_size = 600MB
> log_min_duration_statement = 0
> log_checkpoints = on
> log_connections = off
> log_disconnections = off
> log_duration = on
> log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h'
> log_lock_waits = on
> log_timezone = 'Brazil/East'
> autovacuum = on
> log_autovacuum_min_duration = -1
> autovacuum_max_workers = 8
> autovacuum_naptime = 30s
> autovacuum_vacuum_threshold = 20
> autovacuum_analyze_threshold = 20
> autovacuum_vacuum_scale_factor = 0.2
> autovacuum_analyze_scale_factor = 0.1
> autovacuum_vacuum_cost_delay = -1
> datestyle = 'iso, mdy'
> timezone = 'Brazil/East'
> lc_messages = 'en_US.UTF-8'
> lc_monetary = 'en_US.UTF-8'
> lc_numeric = 'en_US.UTF-8'
> lc_time = 'en_US.UTF-8'
> default_text_search_config = 'pg_catalog.english'
> max_locks_per_transaction = 256
> pgpool.pg_ctl = '/usr/pgsql-9.6/bin/pg_ctl'
> huge_pages=on
> hot_standby = on
> hot_standby_feedback = off
> wal_receiver_timeout = 0
>
>
> Att,
>
> Marcelo,
>
> Acho que primeiramente teria que intender o local do problema. O arquivo
> WAL quando é replicado do servidor master para o servidor slave, demora
> quanto tempo para chegar no servidor slave? Nesse modo, nunca irá termina o
> archive, ele sempre estará aguardando o arquivo WAL, caso queira observar
> no log do postgres slave ele solta a mensagem aguardando o arquivo "XYZ",
> até receber esse arquivo. Como foi calculado esse atraso em 1.6 dias?
> Existe um outro problema que dependedo do volume de gravação que recebe o
> servidor master, caso o volume seja muito alto, ele seguirá o caminho comum
> até chegar no servidor slave, levará um tempo. O que executa no parâmetro
> archive_command ? Como funciona a movimentação da pasta pg_xlog para pasta
> archive? Como está o parâmetro max_wal_senders ?
>
> Obrigado.
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a