Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Настройки autovacuum под HighLoad / 25 сообщений из 43, страница 1 из 2
01.02.2016, 12:41
    #39159998
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Ребья, привет.

Подскажите, пожалуйста, как правильно выставить параметры autovacuum на базе 24/7, с интенсивной записью, размером 1,1 Тб.

Текущие:
autovacuum = on .
autovacuum_max_workers = 10
autovacuum_naptime = 5min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.05
autovacuum_freeze_max_age = 200000000
autovacuum_multixact_freeze_max_age = 400000000
autovacuum_vacuum_cost_delay = 60ms
autovacuum_vacuum_cost_limit = -1
autovacuum_vacuum_threshold = 50

Плюс:
каждую ночь su - postgres -c "vacuumdb --all --analyze"

Вывод интересный:
SELECT relname, age(relfrozenxid) as xid_age,
pg_size_pretty(pg_table_size(oid)) as table_size
FROM pg_class
WHERE relkind = 'r' and pg_table_size(oid) > 1073741824
ORDER BY age(relfrozenxid) DESC LIMIT 10;

table1 159237556 1038 MB
table2 158878128 1343 MB
table3 158815533 1374 MB
table4 158723489 1479 MB
table5 141564968 9660 MB
table6 138502077 4992 MB
table7 138485230 10 GB
table8 135262562 32 GB
table9 135262154 21 GB
table10 118373215 48 GB
...
Рейтинг: 0 / 0
01.02.2016, 14:02
    #39160177
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel BobrovnikovРебья, привет.

Подскажите, пожалуйста, как правильно выставить параметры autovacuum на базе 24/7, с интенсивной записью, размером 1,1 Тб.

Текущие:
autovacuum = on .
autovacuum_max_workers = 10
autovacuum_naptime = 5min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.05
autovacuum_freeze_max_age = 200000000
autovacuum_multixact_freeze_max_age = 400000000
autovacuum_vacuum_cost_delay = 60ms
autovacuum_vacuum_cost_limit = -1
autovacuum_vacuum_threshold = 50

Плюс:
каждую ночь su - postgres -c "vacuumdb --all --analyze"

Вывод интересный:
SELECT relname, age(relfrozenxid) as xid_age,
pg_size_pretty(pg_table_size(oid)) as table_size
FROM pg_class
WHERE relkind = 'r' and pg_table_size(oid) > 1073741824
ORDER BY age(relfrozenxid) DESC LIMIT 10;

table1 159237556 1038 MB
table2 158878128 1343 MB
table3 158815533 1374 MB
table4 158723489 1479 MB
table5 141564968 9660 MB
table6 138502077 4992 MB
table7 138485230 10 GB
table8 135262562 32 GB
table9 135262154 21 GB
table10 118373215 48 GB

Настройки autovacuum выставляются на основе графиков использования autovacuum процессов (обычных и antiwraparound) и графиков загрузки дисковой подсистемы. А не из абстрактных соображений.
Учитывая размер базы 1.1Tb я бы сказал что vacuumdb --all --analyze - оно лишнее а вот autovacuum_vacuum_cost_delay = 60ms наоборот высоковат причем сильно. Но более конкретно - нужны графики за неделю. Без них ничего умного сказать нельзя.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
05.02.2016, 17:41
    #39164324
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Такие данные подойдут?







autovacuum_vacuum_cost_delay уменьшил до 20mc
...
Рейтинг: 0 / 0
06.02.2016, 13:25
    #39164735
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel Bobrovnikov,

Знакомые картинки с Okmeter. :)
Пока у вас график autovacuum workers не упирается в потолок - у вас все более менее разумно настроено и ничего трогать не надо.
Я бы еще наверное уменьшил бы autovacuum_naptime до 1 секунды (вреда от этого обычно не бывает).

А ночной ручной vacuum отключил бы за ненужностью и насилованием дисков.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
08.02.2016, 12:11
    #39165414
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Спасибо за совет.
Еще несколько вопросов:

1)Что скажите насчет увеличения autovacuum_freeze_max_age до 1 млрд? стоит ли делать на отдельных таблицах vacuum freeze?
2) Обнаружил, что на одной из таблиц делали следующее:
autovacuum_enabled = false, toast.autovacuum_enabled = false

Теперь хочу вернуть все в true.

Для чего на некоторых таблиц отключают autovacuum?

Спасибо!
...
Рейтинг: 0 / 0
08.02.2016, 14:26
    #39165563
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel Bobrovnikov<>
Для чего на некоторых таблиц отключают autovacuum?

Спасибо!pgq делает это для insert only партиций табличек очередей, например. И сразу ставят сплошное заполнение страничек. (сдаётся они аналайз там воркером делают) по отработке -- транкейтят. вот чтобы вакуум впустую не гонять, а только аналайз.
...
Рейтинг: 0 / 0
09.02.2016, 21:41
    #39167135
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Спасибо.
а что по поводу - autovacuum_freeze_max_age - надо повышать?
...
Рейтинг: 0 / 0
09.02.2016, 23:24
    #39167163
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel Bobrovnikov,

Я бы не стал. Вместо этого нужно настроить autovacuum так, чтобы заморозка была не такой болезненной через `vacuum_freeze_min_age`.

Вот 3 поста на тему , почитайте (они связаны).
...
Рейтинг: 0 / 0
12.02.2016, 17:17
    #39169766
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
После рестарта сервера, на нем появились такие сессии:

autovacuum: VACUUM public.table1 (to prevent wraparound)
autovacuum: VACUUM public.table2 (to prevent wraparound)
autovacuum: VACUUM public.table3 (to prevent wraparound)
autovacuum: VACUUM public.table4 (to prevent wraparound)
autovacuum: VACUUM public.table5 (to prevent wraparound)
autovacuum: VACUUM public.table6 (to prevent wraparound)
autovacuum: VACUUM public.table7 (to prevent wraparound)
autovacuum: VACUUM public.table8 (to prevent wraparound)
autovacuum: VACUUM public.table9 (to prevent wraparound)
autovacuum: VACUUM public.table10 (to prevent wraparound)

Все мои 10 воркеров пашут как неугомонные.
Выключался сервер штатно.

Остается только ждать? с этим нельзя ничего сделать?
...
Рейтинг: 0 / 0
12.02.2016, 17:24
    #39169775
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
ну и картина маслом

...
Рейтинг: 0 / 0
12.02.2016, 18:24
    #39169831
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel Bobrovnikov,

А какие у вас параметры, как vacuum, так и autovacuum?
Код: sql
1.
SELECT name,setting FROM pg_settings WHERE name ~ 'autova|vacuum';


Сечас вы можете поставить `vacuum_cost_delay` чтобы понизить нагрузку от vacuum'а.
...
Рейтинг: 0 / 0
12.02.2016, 18:33
    #39169842
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Pavel BobrovnikovОстается только ждать? с этим нельзя ничего сделать?увеличить число воркеров. снизить простой автовакуума. на крайняк -- фризить что--то из очереди на заморозку руками.
Или дождаться, когда разрабы напишут хак, чтобы старые таблицы не читать по карте замороженных блоков.


какой общий объем БД ?
какой объем больших таблиц (т.е. партиций, если партицируете) ?
какая скорость прокрутки счетчика транзакций (как быстро эпохи меняются) ?
...
Рейтинг: 0 / 0
12.02.2016, 18:38
    #39169849
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Мне на пгконфе
говорили, что можно понижать приоритет процессов автовакуума
по крону, раз в N минут
...
Рейтинг: 0 / 0
12.02.2016, 18:38
    #39169850
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
vyegorovPavel Bobrovnikov,

...понизить нагрузку от vacuum'а.
предлагаете добиться принудительной остановки сервера для ручного фриза в сингл моде ?

оно красиво выглядит
, со стороны
каково одмину при этом -- как то даже не хочется примерять
...
Рейтинг: 0 / 0
12.02.2016, 18:39
    #39169854
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Короче, настройки автовакуума в POstgres на агрессивный лад,
а в Linux эти процессы держать в пониженном приоритете.
...
Рейтинг: 0 / 0
12.02.2016, 18:47
    #39169864
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
ОКТОГЕН,

вы сами себе противоречите.
приоритет вполне регулируется простоем.

а вообще почитайте на досуге

https://yandex.ru/yandsearch?clid=2186618&text=database is not accepting commands to avoid wraparound data loss in database

-- очень весёлая ошибка.
...
Рейтинг: 0 / 0
12.02.2016, 19:01
    #39169875
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
qwwq, короче, надо на стенде проверять, со свежей версией SQL сервера.
Мне тока что вот тут это сказали
https://pgconf.ru/
...
Рейтинг: 0 / 0
12.02.2016, 19:27
    #39169896
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
qwwq,

имеется ввиду ionice/renice. полезно так делать.
...
Рейтинг: 0 / 0
12.02.2016, 20:43
    #39169924
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
vyegorov,

autovacuum on
autovacuum_analyze_scale_factor 0.05
autovacuum_analyze_threshold 50
autovacuum_freeze_max_age 200000000
autovacuum_max_workers 10
autovacuum_multixact_freeze_max_age 400000000
autovacuum_naptime 1
autovacuum_vacuum_cost_delay 20
autovacuum_vacuum_cost_limit -1
autovacuum_vacuum_scale_factor 0.2
autovacuum_vacuum_threshold 50
log_autovacuum_min_duration -1
vacuum_cost_delay 0
vacuum_cost_limit 200
vacuum_cost_page_dirty 20
vacuum_cost_page_hit 1
vacuum_cost_page_miss 10
vacuum_defer_cleanup_age 0
vacuum_freeze_min_age 50000000
vacuum_freeze_table_age 150000000
vacuum_multixact_freeze_min_age 5000000
vacuum_multixact_freeze_table_age 150000000

спутя 2 часа - ушло 6 таблиц...теперь 4 висят...
...
Рейтинг: 0 / 0
12.02.2016, 20:49
    #39169927
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
сколько выставить vacuum_cost_delay, подскажите, пожалуйста.
...
Рейтинг: 0 / 0
12.02.2016, 20:54
    #39169933
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Alexiusqwwq,

имеется ввиду ionice/renice. полезно так делать.и чо ?
полезно ещё в голову есть, ага


до достижения фундаментального предела -- когда производительности дисковой уже недостаточно чтобы отфризить весь объем Беде за время прокрутки целого (эпоху) в счетчике транзакции, всё остальное сводится к склонности механизма автофриза к бунчировке. Дополнительно зажимать узкое горло при наступлении спазма -- идиотизм. Лавров смотрит на вас с одобрением комментарием.


в общем просвещайтесь:
https://yandex.ru/search/?clid=2186618&text=бунчировка нелинейность дисперсия&lr=213&noreask=1
...
Рейтинг: 0 / 0
12.02.2016, 21:50
    #39169977
vyegorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Судя по всему пришло время и базу надо замораживать.
Если это не особо критично, то пусть добежит. Если ощущается перегруз, то я бы сделал так:
Код: sql
1.
2.
autovacuum_naptime=60 # это умолчательно
vacuum_cost_delay=50 # тут надо поставить как можно меньше, чтобы не мешало основной работе


На будущее — по ссылкам рекомендуют понизить `vacuum_freeze_min_age` основываясь на пишущей нагрузке в базе (значение что-то в районе 2-5 млн.). Если повезёт и все записи на странице будут заморожены, то когда настанет время заморозки всей таблицы, такую страницу можно будет пропустить. Чем больше будет таких “удачных” записей, тем меньше нагрузка от заморозки.
...
Рейтинг: 0 / 0
12.02.2016, 22:03
    #39169987
Pavel Bobrovnikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
2016-02-12 21:56:39 MSK [23825]: [9-1] user=,db= LOG: parameter "vacuum_cost_delay" changed to "50ms"
2016-02-12 21:56:39 MSK [23825]: [10-1] user=,db= LOG: parameter "autovacuum_naptime" changed to "60s"


посмотрим сейчас как пойдет. уже 3 таблицы.
...
Рейтинг: 0 / 0
12.02.2016, 22:10
    #39169993
Alexius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
qwwq,

дисковая нагрузка может быть неравномерной: сейчас есть, а через секунду какой-нибудь запрос доработал и уже почти нет. меняя autovacuum_vacuum_cost_delay можно регулировать аппетиты автовакуума, но поставив слишком большое значение автовакуумы будут долго работать, а поставив небольшое будут пики, в которые производительность будет проседать на запросах.

ionice позволит автовакууму работать более активно в моменты когда нагрузки меньше и не будет мешать запросам когда больше.

я думаю в данном случае до указанного предела далеко.

про бунчировку почитаю, спасибо.


Pavel Bobrovnikov,

если автовакуумы долго работают, попробуйте постепенно уменьшить autovacuum_vacuum_cost_delay до 5-10 (для применения настроек достаточно reload), наблюдая за графиком дисковой утилизации.
...
Рейтинг: 0 / 0
17.02.2016, 11:12
    #39172937
Сергей Б
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Настройки autovacuum под HighLoad
Объясните плиз.
А чем все-таки плохо включать в крон ежедневный ночной vacuumdb --analyze <DB>, когда база данных наименее нагружена (autovacuum off), чем ждать когда автовакум сработает (autovacuum on) в самый неподходящий момент (наиболее высокая нагрузка)
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Настройки autovacuum под HighLoad / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]