memory
Подробности: Failed on request of size 190 in memory context "CacheMemoryContext".
На машине 8GB 4CPU
По настройкам у нас так:
max_connections 400
shared_buffers 2GB
effective_cache_size 6GB
maintenance_work_mem 1GB
checkpoint_completion_target 0.7
wal_buffers 16MB
default_statistics_target 100
random_page_cost 2
effective_io_concurrency 2
work_mem 128kB
min_wal_size 2GB
max_wal_size 4GB
max_worker_processes 8
max_parallel_workers 8
max_parallel_workers_per_gather 4
занято 50 коннектов в idle.
При поднятии 51 коннекта падаем в out of memory
В какую сторону покопать?
В сторону ps / top / free и т.п. Т.е. посмотрите, чем и сколько памяти реально занято, и сколько свободной.
1) закрыть коннекты после выполнения нужной работы или использовать пулер 2) какие запросы эти коннекты посылали в базу? 3) покажите фактический расход памяти на момент ошибки nmon, top и т.д.
top и смотреть, кто жрётЪ память, как сказали выше, по-другому никак, совсем никак. Урезать maintenance_work_mem до 64Мб (а может и меньше) - при необходимости определять для конкретной выполняемой операции: mshurutov@~ > select name, setting, context from pg_settings where name = 'maintenance_work_mem'; name | setting | context ----------------------+---------+--------- maintenance_work_mem | 65536 | user (1 row) mshurutov@~ > context == user говорит о том, что данный параметр может быть изменён пользователем в сессии. Вот, гляньте по параметрам и настройкам: https://postgrespro.ru/docs/postgresql/11/view-pg-settings
сверьте свои параметры с https://pgtune.leopard.in.ua/#/
Обсуждают сегодня