172 похожих чатов

Каждые выходные после бекапа мастера приходит лаг логической репликации, не

знаю уже как траблшутить:

...
2021-04-27 02:07:29.919 background worker logical replication worker (PID 5851) exited with exit code 1
2021-04-27 02:07:34.925 logical replication apply worker for subscription db0_db3 has started
2021-04-27 08:09:00.336 terminating logical replication worker due to timeout
2021-04-27 08:09:00.339 logical replication worker (PID 5911) exited with exit code 1
2021-04-27 08:09:00.342 logical replication apply worker for subscription db0_db3 has started
2021-04-27 08:09:01.465 could not start WAL streaming: ERROR: replication slot db0_db3 is active for PID 18265
2021-04-27 08:09:01.468 background worker ogical replication worker (PID 23078) exited with exit code 1
2021-04-27 08:09:06.477 logical replication apply worker for subscription db0_db3 has started
2021-04-27 08:09:06.486 could not start WAL streaming: ERROR: replication slot db0_db3 is active for PID 18265
2021-04-27 08:09:06.489 background worker logical replication worker (PID 23385) exited with exit code 1
2021-04-27 08:09:11.498 logical replication apply worker for subscription db0_db3 has started
2021-04-27 08:09:11.507 could not start WAL streaming: ERROR: replication slot db0_db3 is active for PID 18265
...

Эта лавина продолжается некоторое время и затыкается, чтоб через 6 часов снова выкинуть ошибку

terminating logical replication worker due to timeout

Нужно ли таймаут еще увеличить? Что вообще происходит, может ли воркер на подписчике отвалиться из-за долгой трансакции на мастере например?

9 ответов

13 просмотров

а не может быть такого что к слоту подключается два и более инстансов? смущает ошибка что слот уже активен для какого-то пида, но из приведенных логов непонятно кто скрывается под этим пидом

blkmrkt- Автор вопроса
Alexey Lesovsky
а не может быть такого что к слоту подключается дв...

Спасибо, я похоже разобрался! На мастере wal_sender_timeout был отключен, а на подписчике он был 10min. К слоту не должно было больше инстансов подключаться тк у нас один мастер и одна логическая реплика. Агрессивный поллинг сокета на мастере летел потому что сокет помечен как nonblocking, это наверное ожидаемое поведение. На подписчике такой лавины поллов не было, потому что подписчик делает работу в промежутках, а мастер долбит сокет и ждет когда сможет скинуть очредную порцию мяса на NIC. А лаг логической репликации вообще может возникнуть из-за долгой трансакции на мастере? Я читал что мол вообще все оплоги отправляются на логическую реплику, и что старты-стопы трансакций в них тоже содержатся. Если это правда, то получается что может произойти такая ситуация, когда например кто-то на мастере захоботит эксклюзивный лок вообще на все и будет ждать, и тем временем произойдет таймаут подписчика?

blkmrkt
Спасибо, я похоже разобрался! На мастере wal_sende...

> А лаг логической репликации вообще может возникнуть из-за долгой трансакции на мастере? да могут быть разные конфликты в зависимости от того что делалось в транзакции, можно об этом почитать тут

blkmrkt- Автор вопроса
Alexey Lesovsky
> А лаг логической репликации вообще может возникн...

Так это, у меня ж не с конфликтами проблемы а с лагом вызванным таймаутами. После ручного килла walsender на мейне и walreceiver на реплике, проходит 6-8 часов пока реплика не подтвердит последний LSN всего на полшишечки, и только после этого начинает по чуть-чуть продвигать свой прогресс. А там гляди ж и следующие выходные наступают!

blkmrkt- Автор вопроса
blkmrkt
Так это, у меня ж не с конфликтами проблемы а с ла...

И вообще похоже в pg_stat_database_conflicts ничего не пишется на логической реплике

blkmrkt
Так это, у меня ж не с конфликтами проблемы а с ла...

конфликт триггерится через конкретный интервал (см. max_standby_streaming_delay и аналогичный archive_delay), поэтому пока этот таймер не истек, будет копиться лаг. Также возможны более сложные варианты с дедлоками обнаружение которых пофиксили относительно недавно - там репликацияв результате встает колом.

blkmrkt- Автор вопроса
Alexey Lesovsky
конфликт триггерится через конкретный интервал (см...

Это же все настройки для hot standby, а логические реплики общаются через слоты и не находятся в recovery mode

blkmrkt
Это же все настройки для hot standby, а логические...

да, верное замечание вобщем у меня нет других идей кроме как в моменты лага смотреть через стату что там происходит в бд

blkmrkt- Автор вопроса
Alexey Lesovsky
да, верное замечание вобщем у меня нет других идей...

Почитал коммиты к 12.6 (мы на 12.5) - сомневаюсь что поможет этот багфикс с незамеченными дедлоками, но обновлюсь в пятницу. Тут еще такая штука что у логического подписчика есть собственная физическая реплика, и сейчас когда смотрю метрики то вижу что у той реплики лаг тоже начал расти в момент когда перестали продвигаться логические confirmed_lst & restart_lsn.

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
8
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта