назад перешли с 10 на 12.3 и в данный момент обнаружили странную проблему, с которой не можем разобраться. Будем благодарны за любую помощь в диагностике проблемы.
Есть кластер с 50 баз. Размеры таблиц в базах самые разные, от мегабайт до терабайт. Уже много времени исопльзуем однажды настроенный аггресивный autovacuum. Раньше он у нас постоянно шуршал и в какой то момент мы даже уменьшили количетсо воркеров чтобы снизить iowait в пиковые нагрузки. Количество активных воркеров автовакума мониторится и подстроенно чтобы они не были постоянно по максимуму загружены.
После грейда на 12 обнаружили что автовакум шуршит постоянно только в одной базе. Остальные базы не автовакумятся. Данный факт подтверждается в реалтайме по pg_stat_activity и по логам автовакума (log_autovacuum_min_duration=0 пишет логи только по одной базе). Время последнего автовакума/автоаналайза в pg_stat_user_tables по всем базам совпадает со временем когда приходил последний VACUUM to prevent wraparound. При этом количество активных воркеров не достигает максимального значения, те воркеры автовакума простаивают.
Например проблемная таблица в одной из баз
-[ RECORD 1 ]-------+------------------------------
n_tup_ins | 25599733
n_tup_upd | 2206685374
n_tup_del | 19938580
n_tup_hot_upd | 1863307770
n_live_tup | 186473676
n_dead_tup | 18177988
n_mod_since_analyze | 3250337
last_autovacuum | 2020-08-26 16:43:02.321971+03
last_autoanalyze | 2020-08-26 14:04:19.132566+03
vacuum_count | 1
autovacuum_count | 4078
analyze_count | 8
autoanalyze_count | 357
Настройки автокума
"autovacuum_max_workers" => 5,
"autovacuum_naptime" => "30s",
"autovacuum_vacuum_threshold" => 5000
"autovacuum_vacuum_scale_factor" => 0.00001
"autovacuum_vacuum_cost_delay" => "10ms"
"autovacuum_vacuum_cost_limit" => 6000,
"autovacuum_analyze_threshold" => 5000,
"autovacuum_analyze_scale_factor" => "0.01",
Плз подкиньте идей куда копать?
В итоге после рестарта кластера проблема ушла и сразу пошел вакум по всем остальным базам. Зарепортил проблему в рассылку, но как воспроизводить не понятно, выглядит так как будто после vacuum to prevent wraparound автовакум зациклился на одной базе. Сделаем триггеры, будем ловить проблему снова.
Обсуждают сегодня