Начало » Использование СУБД » PostgreSQL » Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay
Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3185] |
Wed, 27 September 2023 15:32 |
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
Ошибок в логе кластера - нет.
|
|
|
|
|
|
Re: Перестает работать autovacuum, даже при отключении autovacuum_vacuum_cost_delay [сообщение #3192 является ответом на сообщение #3191] |
Wed, 27 September 2023 20:49 |
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, но нет. Как и все другие в этой базе (в кластере много баз).
|
|
|
Переход к форуму:
Текущее время: Sat Dec 21 21:09:38 GMT+3 2024
Общее время, затраченное на создание страницы: 0.00876 секунд
|