Size: a a a

pgsql – PostgreSQL

2020 June 16

М★

Михаил ★ in pgsql – PostgreSQL
/dev/shm может чет
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Filesystem                      Size  Used Avail Use% Mounted on
udev                             32G     0   32G   0% /dev
tmpfs                           6.3G   19M  6.3G   1% /run
/dev/xxx    15G  6.6G  7.5G  47% /
tmpfs                            32G  2.7M   32G   1% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                            32G     0   32G   0% /sys/fs/cgroup
/dev/md0                        487M   93M  366M  21% /boot
/dev/yyy  415G  105G  289G  27% /hot-db
/dev/zzz     15G  7.0G  7.0G  50% /var
/dev/nnn   2.0T   25G  1.9T   2% /cold-db
tmpfs                           6.3G     0  6.3G   0% /run/user/0
tmpfs                           6.3G     0  6.3G   0% /run/user/1001
tmpfs                           6.3G     0  6.3G   0% /run/user/1000
источник

AS

Alexey Stavrov in pgsql – PostgreSQL
Вопрос про strict consistency в этой статье:
https://www.cockroachlabs.com/blog/consistency-model/

Тут есть такая фраза:
Strict serializability says that transaction behavior is equivalent to some serial execution, and the serial order of transactions corresponds to real time (i.e. a transaction started after another one finished will be ordered after it). Note that strict serializability (like linearizability) still doesn't say anything about the relative ordering of concurrent transactions (but, of course, those transaction still need to appear to be "isolated" from each other). We'll come back to this point in the next sections.

Согласно этой формулировке выглядит так, что в pg тоже strict consistency (потому что транзакция, которая началась, видит эффекты всех предыдущих закомиченных транзакций).
Но похоже, что это не так и в pg скорее serializable + sequential consistency.

История в strict consistency должна соотвествовать последовательной истории, когда произошли эти комиты, так?
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Viktor Grigorev
Привет, посдкажите пожалуйста, как такое возможно
could not resize shared memory segment /postgresql to bytes no space left on device
База запущена на физическом сервере без всяких докеров. Подняли max_parallel_workers_per_gather и убавили work_mem, после этого начались такие проблемы
а началось на определенных типах операций?
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
shared_buffers был 16Gb долгое время, ошибки не было. Вчера уменьшил work_mem, поднял max_connections, max_parallel_workers_per_gather и пришла проблема.

Запрос - селект по одной таблице, который достает 1 строку
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Вижу разные запросы
ERROR:  could not resize shared memory segment "/PostgreSQL.111591575" to 1048576 bytes: No space left on device
CONTEXT:  parallel worker
STATEMENT: SELECT d.* FROM foo d WHERE not
exists (SELECT id FROM bar WHERE bar.id = d.id);
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Viktor Grigorev
Вижу разные запросы
ERROR:  could not resize shared memory segment "/PostgreSQL.111591575" to 1048576 bytes: No space left on device
CONTEXT:  parallel worker
STATEMENT: SELECT d.* FROM foo d WHERE not
exists (SELECT id FROM bar WHERE bar.id = d.id);
explain (analyze, verbose, buffers) на запрос сделайте
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
сейчас убавил shared_buffers, ошибка ушла
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
может не стоило уменьшать work_mem? у вас там работа с диском идёт
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
наверно не стоило, но надо было max_connections=1000
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Alexey Stavrov
Вопрос про strict consistency в этой статье:
https://www.cockroachlabs.com/blog/consistency-model/

Тут есть такая фраза:
Strict serializability says that transaction behavior is equivalent to some serial execution, and the serial order of transactions corresponds to real time (i.e. a transaction started after another one finished will be ordered after it). Note that strict serializability (like linearizability) still doesn't say anything about the relative ordering of concurrent transactions (but, of course, those transaction still need to appear to be "isolated" from each other). We'll come back to this point in the next sections.

Согласно этой формулировке выглядит так, что в pg тоже strict consistency (потому что транзакция, которая началась, видит эффекты всех предыдущих закомиченных транзакций).
Но похоже, что это не так и в pg скорее serializable + sequential consistency.

История в strict consistency должна соотвествовать последовательной истории, когда произошли эти комиты, так?
Да, согласно этой формулировке в PostgreSQL тоже strict serializability. Что как бы намекает нам на "качество" и "полезность" теории в этой отрасли, IMHO (но я бы не сказал, что читал много) . :(
Т.е. даже у разных реализаций strict serializability могут быть существенно разные свойства, а в "теории" ничего про это не видно, а уж что касается более низких уровней изоляции — там вообще бардак. К примеру, ни одна MVCC database, которая реализует RC и RR примерно так, как это делает postgres, их "теоретическим" определениям не соответствует — зато ISO SQL можно прочитать так, что таки да.
И по прочтению некоторых статей "выдающихся" авторов в этой области мне лично не совсем понятно, почему именно эти люди должны давать нам определения. ;)
источник

СГ

Сергей Голод... in pgsql – PostgreSQL
Viktor Grigorev
наверно не стоило, но надо было max_connections=1000
так у вас возможно просто не хватает памяти при выполнении запросов. общие характеристики сервера какие?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Viktor Grigorev
Привет, посдкажите пожалуйста, как такое возможно
could not resize shared memory segment /postgresql to bytes no space left on device
База запущена на физическом сервере без всяких докеров. Подняли max_parallel_workers_per_gather и убавили work_mem, после этого начались такие проблемы
А
mount | grep /dev/shm

Что показывает? И полная версия PostgreSQL какая?
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Viktor Grigorev
Привет, посдкажите пожалуйста, как такое возможно
could not resize shared memory segment /postgresql to bytes no space left on device
База запущена на физическом сервере без всяких докеров. Подняли max_parallel_workers_per_gather и убавили work_mem, после этого начались такие проблемы
Это dsm (dynamic shared memory) - динамически создаваемые сегменты шаред памяти для передачи данных между параллельными воркерами. Ес-но число таких сегментов зависит от числа параллельно запущенных воркеров. Так что не удивительно, что проблема появиласт после увеличения max_parallel_workers_per_garher.
Посмотрите лимиты:
ipcs -lm
и
cat /proc/sys/kernel/shmmax
cat /proc/sys/kernel/shmall
cat /proc/sys/kernel/shmmni
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Yaroslav Schekin
А
mount | grep /dev/shm

Что показывает? И полная версия PostgreSQL какая?
Не у компа сейчас. /dev/shm показывал 32 гб, shmmax какие-то запредельные числа, версия pg 11, всего памяти 64гб. Настройки брал из pgtune (work_mem правда немного округлил вверх до 4мб)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Viktor Grigorev
Не у компа сейчас. /dev/shm показывал 32 гб, shmmax какие-то запредельные числа, версия pg 11, всего памяти 64гб. Настройки брал из pgtune (work_mem правда немного округлил вверх до 4мб)
Нет, интересны конкретные результаты, не "пересказ", извините.

> версия pg 11,

И такой полной версии не существует. Вы думаете, тут все просто так задают уточняющие вопросы, да? ;(
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
А сколько на машине физической памяти?
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Yaroslav Schekin
Нет, интересны конкретные результаты, не "пересказ", извините.

> версия pg 11,

И такой полной версии не существует. Вы думаете, тут все просто так задают уточняющие вопросы, да? ;(
Точно смогу ответить позднее, когда буду у компьютера
источник

VG

Viktor Grigorev in pgsql – PostgreSQL
Konstantin Knizhnik
А сколько на машине физической памяти?
Всего 64 гб
источник