Как надежно ограничить память в базе данных postgres - PullRequest
0 голосов
/ 29 сентября 2018

Я запускаю postgres 10.4 на очень маленькой машине со строгими ограничениями памяти (например, 200 МБ) в Debian.В моем случае пространство подкачки системы должно быть отключено, но места на диске SSD достаточно (например,> 500 ГБ).Я использую водопадный подход для распределения всей доступной памяти для различных целей в postgres, следуя этой логике:

The available memory is 200MB
---
max_connections = 10
max_worker_processes = 2
shared_buffers = 50MB
work_mem = (200MB - shared_buffers) * 0.8 / max_connections
maintenance_work_mem = (200MB - shared_buffers) * 0.1 / max_worker_processes
temp_buffers = (200MB - shared_buffers) * 0.05

wal_buffers = (200MB - shared_buffers) * 0.05
temp_file_limit = -1 (i.e. unlimited)
effective_cache_size = 200MB / 2

Для меня очень важно, чтобы сессии или даже postmaster никогда не отменялись из-за ограничений памяти наобеспечить стабильную работу postgres.В ситуациях с нехваткой памяти postgres должен работать с временными файлами, а не с памятью.

В некоторых ситуациях я все еще получаю ошибки памяти.(например, когда у меня большая вставка в таблицу.)

Как мне нужно установить все параметры, чтобы гарантировать, что postgres не будет пытаться получить больше памяти, чем доступно.

1 Ответ

0 голосов
/ 01 октября 2018

Вы можете обратиться к этому официальному документу для более глубокого изучения конфигурации памяти сервера postgresql - https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

Он имеет все ограничения и правильно предложенные значения для каждого параметра памяти, эти параметры могутбыть настроен с использованием атрибутов конфигурации сервера, таких как количество процессоров, объем оперативной памяти и т. д.

В противном случае используйте этот онлайн-инструмент для тестирования различных конфигураций и убедитесь, что серверу не требуется больше памяти, чем доступно дляэто - https://pgtune.leopard.in.ua/#/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...