SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » PostgreSQL » Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay
icon9.gif   Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3185] Wed, 27 September 2023 15:32 Переход к следующему сообщению
xpg934 в настоящее время не в онлайне  xpg934
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
Коллеги, помогите разобраться - куда дальше копать.
У нас огромные базы (10+ Tb, разбитые на базы по 100-500Gb).
В части баз есть таблицы с постоянными update, т.е. dead tupples плодятся безбожно.
И всё бы хорошо, пока работает autovacuum и дополнительно ночью ещё проходимся ручным vacuum (analyze, skip_locked) для таблиц, где dead_tupples > 5%.

Сначала всё уперолось (по ощущениям) в дефолтный cost-based autovacuum - воркеры просто не запускаются после какого-то периода, и могут не работать 1-2 суток. Вчера отключили это, поставив autovacuum_vacuum_cost_delay = 0. Проблема сразу решилась, autovacuum стал работать четко 1 раз в минуту, согласно указанного autovacuum_naptime.

Но вдруг это всё остановилось. Воркеры autovacuum перестали опять запускаться, dead tupples плодятся, что приводит к выборке по 100мс из таблицы, где всего 23 записи.

Что смотреть? Почему оно опять перестало работать? Что проверить?

Настройки кластера примерно такие:

autovacuum = on
log_autovacuum_min_duration = 1000

autovacuum_max_workers = 4
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.10
autovacuum_analyze_scale_factor = 0.05

autovacuum_vacuum_cost_delay = 0
autovacuum_vacuum_cost_limit = 1000

Ошибок в логе кластера - нет.

/index.php/fa/180/0/
Re: Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3187 является ответом на сообщение #3185] Wed, 27 September 2023 16:11 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 368
Зарегистрирован: June 2022
Senior Member
Возможно у вас проблема в статистике? Ее обновление не помогает?
И какая версия постгреса?
Re: Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3190 является ответом на сообщение #3187] Wed, 27 September 2023 19:11 Переход к предыдущему сообщениюПереход к следующему сообщению
xpg934 в настоящее время не в онлайне  xpg934
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
Версия 12. Статистика... а чем она может мешать работать autovacuum?

Вот например две таблицы:
/index.php/fa/181/0/

В первой бесконечное кол-во dead tupples.
Во второй - почти 27%

В любом случае это сильно больше заданного предела для всего кластера:

autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.10
autovacuum_analyze_scale_factor = 0.05

Но не запускается и всё тут. Со вчерашнего дня.
Re: Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3191 является ответом на сообщение #3190] Wed, 27 September 2023 20:25 Переход к предыдущему сообщениюПереход к следующему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 368
Зарегистрирован: June 2022
Senior Member
https://postgrespro.ru/list/thread-id/1533589

Вот была похожая проблема, но там ещё старее постгрес
Re: Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3192 является ответом на сообщение #3191] Wed, 27 September 2023 20:49 Переход к предыдущему сообщению
xpg934 в настоящее время не в онлайне  xpg934
Сообщений: 3
Зарегистрирован: September 2023
Junior Member
Там причина понятна - по умолчанию включен cost-based autovacuum и он заставляет спать воркеры из-за огромного кол-ва записей в таблицах.
Но это не наш случай, т.к. у нас autovacuum_cost_delay = 0, т.е. любые задержки вроде как отключены.

Более того, я бы понял если бы autovacuum не запускался для каких-то отдельных, больших, таблиц.
Но он не работает и для совсем маленьких, которые постоянно изменяются.
Например такие:

relname: contact_pools
n_live_tup: 11434
n_dead_tup: 2064
autovacuum_count: 16727
last_autovacuum: 2023-09-26 18:13:21.612
last_autoanalyze: 2023-09-26 18:47:11.530

Или ещё веселее:

relname: ods_storage_sync_queue
n_live_tup: 8
n_dead_tup: 180542
autovacuum_count: 74167
last_autovacuum: 2023-09-26 18:48:11.868
last_autoanalyze: 2023-09-26 18:48:11.869

Обе таблицы давно требуют autovacuum, но нет. Как и все другие в этой базе (в кластере много баз).
Предыдущая тема: Ошибка блокировки
Следующая тема: Развертка кластера Greenplum
Переход к форуму:
  


Текущее время: Wed Dec 18 18:09:59 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00739 секунд