Bom dia Flavio,
Neste momento nosso servidor StandBy não está recebendo consultas devido ao
alto delay entre o ultimo archive enviado, e o aplicado no standby. Mas
esta habilitado para receber consultas.
As configurações de max_standby_streaming_delay e max_standby_archive_delay
estão seguindo o padrão do postgres. Não fiz alterações nestes parametros.
max_standby_archive_delay | 30s
max_standby_streaming_delay | 30s
Eles poderiam influenciar?
Quanto as consultas
repositorio=# select * from pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | active | active_pid
| xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn
-------------+--------+-----------+--------+----------+--------+------------+-----------+--------------+--------------+---------------------
bdreplica01 | | physical | | | t | 47368
| 125364835 | | 928/B4000000 |
repositorio=# select * from pg_stat_replication;
pid | usesysid | usename | application_name | client_addr |
client_hostname | client_port | backend_start |
backend_xmin | state | se
nt_location | write_location | flush_location | replay_location |
sync_priority | sync_state
-------+----------+-------------+------------------+--------------+-----------------+-------------+-------------------------------+--------------+-----------+---
------------+----------------+----------------+-----------------+---------------+------------
47368 | 18025 | replication | walreceiver | 10.120.5.201 |
| 50464 | 2017-08-29 15:39:31.591119-03 | |
streaming | 92
9/98687328 | 929/98686000 | 929/98686000 | 88E/91CB7AE0 |
0 | async
O parametro de log checkpoint está habilitado em nosso banco, e a
quantidade de archives gerados simultaneamente é o seguinte.
[root@bdreplica00 config_exporters]# lsof | grep 00000 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
169
[root@bdreplica00 config_exporters]# lsof | grep 00000 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
159
[root@bdreplica00 config_exporters]# lsof | grep 00000 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
189
[root@bdreplica00 config_exporters]# lsof | grep 00000 | grep postgres |
grep -v "deleted" | grep pg_xlog | wc -l
209
O consumo do wal_receiver é baixo comparado ao numero de CPUs que temos. O
processo consome em media 20% de CPU em um nucleo. Possuimos 20 nucleos.
12819 postgres 20 0 35,692g 3520 1876 S 19,2 0,0 149:28.23
postgres: wal receiver process streaming 933/7C8D8000
40604 postgres 20 0 35,686g 3164 1468 D 2,6 0,0 126:44.17
postgres: startup process recovering 000000010000088E00000097
Os dados do IOSTAT são os seguintes
[root@bdreplica01 config_exporters]# iostat
Linux 3.10.0-327.36.3.el7.x86_64 (bdreplica01) 08/31/2017 _x86_64_ (20 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0,26 0,00 0,77 2,97 0,00 96,01
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
md0 2246,70 26805,26 50759,55 18153260865 34375764472
Quanto a escrita e leitura vejo que a mesma não esta saturada. Em nossa
configuração conseguimos atingir 1,5Gb/s de escrita no disco de banco.
Atualmente este disco é um RAID0 de 17 SSDs. O processo de aplicação de
archives esta consumindo proximo a 16Mb/s.
O problema não poderia estar ligado ao tamanho do archive, que no caso é de
16MB. Outro ponto, a blocagem do disco poderia influenciar neste processo
de restore?
Att,
Em 31 de agosto de 2017 09:25, Flavio Henrique Araque Gurgel <
[email protected]> escreveu:
>
>
> Em qui, 31 de ago de 2017 às 13:24, Daniel Luiz da Silva <
> [email protected]> escreveu:
>
>> *De: *"Marcelo Kruger" <[email protected]>
>> *Para: *"Comunidade PostgreSQL Brasileira" <[email protected].
>> org.br>
>> *Enviadas: *Quinta-feira, 31 de agosto de 2017 7:42:46
>>
>> *Assunto: *Re: [pgbr-geral] Lentidão na aplicação do Archive -
>> Stream Replication
>>
>> Bom dia Fabio,
>> Creio que tenha me expressado da maneira incorreta. Não faço nenhuma
>> alteração para copia de archives uma vez que todo o pg_xlog é transferido
>> para a outra maquina via WAL Sender sem que tenha que fazer alterações
>> tanto no recovery.conf, quanto no postgres.conf de ambas as maquinas.
>> Criamos um slot e definimos o banco como hot standby, o procedimento que
>> por sua vez fará com que o a replica receba os arquivos da maquina master,
>> e isso esta ocorrendo corretamente e de forma instantanea.
>>
>> Entretanto irei seguir as recomendações passadas por você, e irei testar
>> o procedimento do Euler.
>>
>> Agradeço desde já pela atenção.
>>
>> Att,
>>
>> Em 31 de agosto de 2017 06:45, Fábio Telles Rodriguez <
>> [email protected]> escreveu:
>>
>>>
>>>
>>> Em 30 de agosto de 2017 19:21, Marcelo Kruger <
>>> [email protected]> escreveu:
>>>
>>>> Daniel,
>>>>
>>>> Devido ao archive estar por padrão no pg_xlog não foi necessario
>>>> especificar o archive_command.
>>>>
>>> Você está fazendo confusão! Jamais copie arquivos diretamente para
>>> dentro ou para fora do pg_xlog. Deixe que o PostgreSQL gerencie esta área
>>> para você.
>>>
>>> Monte o Standby de acordo com o procedimento normal. Se estiver na
>>> dúvida, siga o procedimento do artigo do Euler Taveira em:
>>> http://eulerto.blogspot.com.br/2017/02/replicacao-o-que-mudou.html
>>>
>>
>>
>> Marcelo,
>> Esse artigo explica bem como configurar diferentes cenários de
>> replicação. Mas no seu caso, perceba que a princípio, não existe
>> configuração para recebimento do slot de replicação. Então algum problema
>> com configuração de hardware ou rede, pode estar acontecendo.
>>
>
> Gente, vamos todos com muuuuuita calma aí. Um monte de informação jogada e
> nenhuma direção clara pra identificar o problema. Os artigos enviados estão
> ótimos e corretos, mas parece que o OP está seguindo "o manual" e tem uma
> replicação bem padrão configurada, considero que esteja correta.
>
> Ao OP, tenho uma única pergunta - essa base standby recebe consultas de
> leitura?
> Quais são as configurações max_standby_streaming_delay
> e max_standby_archive_delay (parece não importante no seu caso esta última)
> ?
>
> Como está usando slots de replicação, qual o resultado das consultas
> abaixo *no servidor mestre* :
> TABLE pg_replication_slots;
> TABLE pg_stat_replication;
>
> Você tem o parãmetro log_checkpoints habilitado no mestre? Se sim, tem
> como fazer um grep checkpoint no seu log pra gente ver o quanto essa base
> escreve?
>
> No servidor standby, tem como ver se o processo wal_receiver está
> consumindo muita CPU (top, ps) ?
> No servidor standby, poderia nos dizer se a utilisação de disco em escrita
> está saturada (iostat) ?
>
> []s
> Flavio Gurgel
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral