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

Всем доброго дня. Подскажите, пожалуйста, у меня в коннектах висят

"COMMIT" в статусе "active", а как узнать что было до вызова commit ?

41 ответов

68 просмотров

В логи посмотреть. Если включен какой-то log_statment или auto_explain... А так — это по дефолту никуда не записывается.

Синхронная репликацыя что ли встала?

Ilya Anfimov
Синхронная репликацыя что ли встала?

да вот не понимаю, мне приходит этот коммит и синх реплика схватывает replay_lag Хотя уже настроил, synchronous_commit = remote_apply (был просто On )

Марсель Габдрахманов
физическая.

Хм. МНОГО удалений таблиц/сужэний их сегментов? Или одна удаляется, но на тысячи сегментов?

Марсель Габдрахманов
физическая.

А, слушай, туплю что-то replay_lag — на ведомом смотришь? Тут да, есть какие-то шансы, что если COMMIT ужэ одобрен, но долго что-то делает — то WAL дальшэ не идут, ведомый не видит WAL и ты на нём видишь lag.

Ilya Anfimov
Хм. МНОГО удалений таблиц/сужэний их сегментов? И...

удалений нет, если и есть то одна запись раз в час. приблизительно такая концепция: select * where id in (1, 2, 3) lock for update update field1 = value1, ... where id = 1 update field2 = value2, ... where id = 2 update field3 = value3, ... where id = 3 insert into another_table update another_table2 commit

Ilya Anfimov
А, слушай, туплю что-то replay_lag — на ведомом см...

я на мастере вызываю select * from pg_catalog.pg_stat_replication PG 15.4

Марсель Габдрахманов
физическая.

Кстати, подумалось — сужэния сегментов не в момент COMMIT делаются, так что это не оно. Но удаления таблиц — могут быть...

Марсель Габдрахманов
удаления таблиц точно нет.

Сегментов таблиц? Индэексов? Реиндэксацыя? vacuum full?

А вообще — strace на него, и смотреть, над чем задумался.

Ilya Anfimov
А вообще — strace на него, и смотреть, над чем зад...

strace на "головной процесс ПГ" или на walreceiver ?

Ilya Anfimov
А вообще — strace на него, и смотреть, над чем зад...

commit waiting for wal/log коммиты ждут принятия вала на реплике видимо.

Марсель Габдрахманов
strace на "головной процесс ПГ" или на walreceiver...

Да на всех по очереди. Я бы для начала выяснил — какого чёрта COMMIT висит в active, а не переходит в idle почти мгновенно.

Ilya Anfimov
А, слушай, туплю что-то replay_lag — на ведомом см...

видимо что-то типа того, о чём я три недели назад писал? ну, когда реплика теряла мастер, а после восстановления коннекта не забирала WAL'ы, пока с уже имевшимися replay не доделала...

Phil Chertiev
видимо что-то типа того, о чём я три недели назад ...

Вряд ли. У него-то наборот synchronous = ... apply, так что неприменённых WAL не можэт быть много.

Марсель Габдрахманов
хороший, вопрос.

Слушай, а там на ведомом нет max_standby_streaming_delay ? Если есть, и нет (или протух по max_что-то там) hot_standby_feedback — то понятно, ведущий ждёт ведомого, ведомый получил WAL, который при apply помешает одной из его транзакцый — и ждёт, пока эта транзакцыя завершытся.

Марсель Габдрахманов
max_standby_streaming_delay = 5 hot_standby_feedb...

Показали бы Вы все поля записи pg_stat_activity для "зависшего" backend, что ли...

Марсель Габдрахманов
он в статусе wait_event - IPC - SyncRep

ждет когда синхранная реплика ответит

Vladimir Barsukov
ждет когда синхранная реплика ответит

это я понял, только я не понимаю что вызывает "Лаг " синх реплики.

Марсель Габдрахманов
да вот не понимаю, мне приходит этот коммит и синх...

synchronous_commit = remote_apply — более жёсткий уровень чем просто on, то есть включив его вы замедлили commit на мастере, а не ускорили

S B
synchronous_commit = remote_apply — более жёсткий ...

да я к этому и пришёл, в режиме ON отставанние реплики доходило до 20-ти часов.

я тоже думал про это, смотрел скорость дисков, разницу, даже менял местами реплику и мастер

Марсель Габдрахманов
я тоже думал про это, смотрел скорость дисков, раз...

ну во вервых должно быть главное правило, если синхронная репликация то должно быть не менее 2х реплик, это даже в доке написано. и поставить режим что бы он ожидал подтверждения от хотя бы от одной

Марсель Габдрахманов
я тоже думал про это, смотрел скорость дисков, раз...

мож там индексов каких-то не хватает, которые есть/работают на мастере, а на реплике нет?

S B
мож там индексов каких-то не хватает, которые есть...

а как, при потоковой репликации, может не работать индекс ? Да и при чем тут индекс, если реплика находится только в лишь наполнении WAL

Марсель Габдрахманов
это если бэкапа нет видимо "Нормального".

Скорее — если высокая доступность сервиса очень важна. Тогда да, тогда аппаратная конфигурацыя должна начинаться с трёх серверов, и на все три должно всё литься, и какое-то управление всем этим нужно (хотя такое). (Но в большынстве случаев, когда людям нужна реплика — это не настолько всё существенно).

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта