Size: a a a

pgsql – PostgreSQL

2021 January 10

am

a m in pgsql – PostgreSQL
Что значит «придется»? Это не логичное ли решение?
Когда постгресу даешь много памяти на воркер — он бежит делать делать свои мерж джоины — зря старались-писали, что ли? — и к вам в гости заходит OOM.
«Тяжелая транзакция», которой нужно много памяти — это что такое? Постгрес между отдельными запросами разве что-то в памяти хранит?
источник

b

blkmrkt in pgsql – PostgreSQL
>Что значит «придется»? Это не логичное ли решение?

Я именно это и спросил, есть ли альтернативный режим ограничения памяти постгрес кластеру)

>«Тяжелая транзакция», которой нужно много памяти — это что такое?

Постройка очередной таблицы-индекса например, запланированная компактификация (роллапы) в некоторых таблицах и тому подобное.
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
blkmrkt
Небольшая проблемка с ПГ, начал дохнуть от ООМ киллера почти что по кд. Бд используется и для олтп и для агрегаций и в качестве системы распределенных локов для задач не требующих постоянного коннекта у бд.

Неужели единственный способ не допускать прихода ООМ киллера это жестко ограничить слоты подключений и память на воркера?
выставьте разумный shared_buffers и vm.overcommit_memory=2.
и толстые запросы будут сами отваливаться до прихода ООM.

https://www.postgresql.org/docs/current/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
еще можно swap добавить чтоб объем виртуальной памяти расширить
источник

P

Protey in pgsql – PostgreSQL
Alexey Lesovsky
еще можно swap добавить чтоб объем виртуальной памяти расширить
вот этого не надо, если система ушла в swap - всё быстро рушится
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
есть мнение что в случае своппинга лучше притормозить, чем упасть по OOM и вообще уйти в отказ
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
тем более на быстрых SSD/NVMe проблема трешинга не так сильно бьет
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
проблема со своппингом может подкрасть с другой стороны - в aws можно выесть кредиты на io блочного устройства и производительность будет принудительно лимитирована ))) но это уже особенность облачных провайдеров
источник

P

Protey in pgsql – PostgreSQL
У PostgreSQL хорошая документация, и настройка памяти неплохо расписана. Немного наблюдений за текущей нагрузкой, подстройка, и проблем быть вообще не должно. Использование swap этого индикатор начала конца, нужно срочно останавливать БД, пока это возможно, отправлять сервер в перезагрузку, и быстро пересчитывать настройки
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
> Использование swap этого индикатор начала конца, нужно срочно останавливать БД, пока это возможно, отправлять сервер в перезагрузку, и быстро пересчитывать настройки

swapoff -a && swapon -a
источник

am

a m in pgsql – PostgreSQL
Своп нужен для запуска программ, которым память не нужна, но все равно отжирается из жадности. Едва ли постгрес попадает в их круг, и тут лучше убитый бекенд, чем полузависший сервер.
источник

P

Protey in pgsql – PostgreSQL
a m
Своп нужен для запуска программ, которым память не нужна, но все равно отжирается из жадности. Едва ли постгрес попадает в их круг, и тут лучше убитый бекенд, чем полузависший сервер.
Сильно не согласен на счёт свопа, читайте документацию по Linux. И его отключение и включение одной командой никак загруженную память не освободит, начнут падать процессы, вытесненные в swap. А там могут быть системные вещи
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
впрочем как и в свопе может быть и мусор от процессов которые уже давно завершились
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
a m
Своп нужен для запуска программ, которым память не нужна, но все равно отжирается из жадности. Едва ли постгрес попадает в их круг, и тут лучше убитый бекенд, чем полузависший сервер.
убитый бэкенд - под бэкендом же имеется ввиду постгресовый процесс?
источник

am

a m in pgsql – PostgreSQL
Alexey Lesovsky
убитый бэкенд - под бэкендом же имеется ввиду постгресовый процесс?
М-м, да.
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
тогда не уверен что это прям лучше.
бэкенд убитый по ООМ ( SIGKILL) отправит базу в режим восстановления - все клиенты будут отключены и не смогут подключиться пока БД не восстановится. в таком случае либо файловер делать, либо ждать пока БД поднимется - в обоих случаях клиенты будут страдать.
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
еще раз повторяю тормоза от т.н. своппинга сильно преувеличены и были актуальны лет 5-10 назад. с появлением SSD/NVMe своппинг уже не так больно
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
при этом я сейчас не настаиваю что надо идти и включать своп))) я к тому что "своп на сервере с БД это плохо" - это не аксиома
источник

am

a m in pgsql – PostgreSQL
Alexey Lesovsky
еще раз повторяю тормоза от т.н. своппинга сильно преувеличены и были актуальны лет 5-10 назад. с появлением SSD/NVMe своппинг уже не так больно
По той же логике можно гонять постгрес с дефолтными параметрами на 256 мегабайтов памяти. Чего там в той памяти делать, когда эсосдэ быстрое?
источник

AL

Alexey Lesovsky in pgsql – PostgreSQL
)))
источник