невозможно изменить размер Postgres 10 / dev / shm из-за ограничения общей памяти кубернетами - PullRequest
0 голосов
/ 05 августа 2020

Произошла следующая ошибка при чтении из таблицы PG 10 с 10 параллельными потоками: -

ОШИБКА: не удалось изменить размер сегмента общей памяти «/PostgreSQL.1110214013» до 3158016 байт: не осталось места device

Похоже, это результат того, что K8s ограничил максимальный размер / dev / shm / до 64 МБ. Если установить это значение выше, получится 64 МБ.

Параллельное чтение выполняется задачами Spark и разбивается на разделы на основе хешированного значения идентифицирующего столбца. Интересно, могут ли несбалансированные разделы привести к тому, что конкретная задача превысит значение postgres work_mem для процесса, вызывающего запись на диск.

Я вижу соответствующий журнал ошибок для каждого из мои потоки, поэтому изменение размера этого сегмента общей памяти происходит несколько раз (предположительно, запрошенные изменения размеров превышают заблокированные 64 МБ)

Пробовали увеличить work_mem с 4 МБ до 32 МБ, 64 МБ и, наконец, 256 МБ но видели ошибку на каждом этапе. Ниже приведен полный набор настроек PG, которые, как мне кажется, можно настроить, чтобы избежать проблем с использованием c диска: -

  • effective_cache_size: «750MB»
  • shared_buffers: «2GB»
  • min_wal_size: «80MB»
  • max_wal_size: «5GB»
  • work_mem: «4MB, 32MB, 64MB, 128MB, 256MB» (все пробовали)
  • random_page_cost: 4 (интересно, может ли этот параметр быть использован?)
  • max_connections: 100

Есть потенциальный обходной путь, который включает в себя установку каталога в / dev / shm /, но будет предпочитаю избегать этого решения, поскольку я не смогу ограничить размер, до которого может вырасти каталог, в идеале я нашел бы решение, которое работает с 64 МБ.

Спасибо.

...