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

Коллеги, всем привет. Давно пользуемся постгресом (с 9.0), примерно месяц

назад перешли с 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",

Плз подкиньте идей куда копать?

1 ответов

8 просмотров
Max-Vikharev Автор вопроса

В итоге после рестарта кластера проблема ушла и сразу пошел вакум по всем остальным базам. Зарепортил проблему в рассылку, но как воспроизводить не понятно, выглядит так как будто после vacuum to prevent wraparound автовакум зациклился на одной базе. Сделаем триггеры, будем ловить проблему снова.

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
9
короче я не выдержал постоянно определять структуры, чтобы возвращать массивы разных типов. Как обычно еще это делают?
Павλо 🇺🇦
7
Если у очереди установлено x-message-ttl, при получении сообщения из этой очереди, можно узнать остаток времени жизни сообщения?
Сергей
8
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Карта сайта