Hi Kyotaro,
I have tried to test your patches. Unfortunately even after applying the patches
the WAL Sender is still sending too frequent keepalive messages.
In my opinion the fix is to make sure that wal_sender_timeout/2 has passed before sending
the keepalive message in the code fragment I had shared earlier.
In other words we should replace the call to
WalSndKeepalive(false);
with
WalSndKeepaliveIfNecessary(false);
Do you agree with the suggested fix?
At Tue, 08 Jun 2021 10:05:36 +0900 (JST), Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote in
> At Mon, 7 Jun 2021 15:26:05 +0500, Abbas Butt <abbas.butt@enterprisedb.com> wrote in
> > On Mon, Jun 7, 2021 at 3:13 PM Amit Kapila <amit.kapila16@gmail.com> wrote:
> > > I am not sure sending feedback every time before sleep is a good idea,
> > > this might lead to unnecessarily sending more messages. Can we try by
> > > using one-second interval with -s option to see how it behaves? As a
> > > matter of comparison the similar logic in workers.c uses
> > > wal_receiver_timeout to send such an update message rather than
> > > sending it every time before sleep.
>
> Logical walreceiver sends a feedback when walrcv_eceive() doesn't
> receive a byte. If its' not good that pg_recvlogical does the same
> thing, do we need to improve logical walsender's behavior as well?
For the clarity, only the change in the walsender side can stop the
flood.
regards.
--
Kyotaro Horiguchi
NTT Open Source Software Center
--
--
Abbas
Senior Architect
Skype ID: gabbasb
Follow us on Twitter
@EnterpriseDB