LINUX.ORG.RU

Постгрес в контейнере и ограничение по памяти?

 , ,


0

2

Имеется постгрес в контейнере в кубе. За несколько дней у него растёт потребление по памяти постепенно. Пока не дорастает до лимита, процесс-коннект не прибивает ООМ-ом и всё заново не происходит. Кажется, что это не совсем хорошо. Хочется навести порядок. Начинал с 60M, уже 300M ему выделил, он сегодня до 200 дорос, как чайный гриб, растёт и всё, при том, что он и на 60M работал - ему 200M явно не надо.

Причём судя по тому, что, скажем, он 3 дня работает нормально, это явно не какие-то там пики и тд, просто память утекает в какие-то кеши или хз куда.

В идеале хочется задать постгресу Xmx60m как жаве и он за пределы этих 60m не вылазил и сам рассчитал там размеры для своих кешей и прочего. А не ронял процессы по ООМ.

Как тут правильно поступить?

★★★

Последнее исправление: vbr (всего исправлений: 2)

Ответ на: комментарий от maxcom
shared_buffers = 128MB
#work_mem = 4MB

Внутри контейнера процессы:

# ps aux
PID   USER     TIME  COMMAND
    1 postgres  0:12 postgres
   22 postgres  0:03 postgres: checkpointer 
   23 postgres  0:01 postgres: background writer 
   25 postgres  0:09 postgres: walwriter 
   26 postgres  0:00 postgres: autovacuum launcher 
   27 postgres  0:00 postgres: logical replication launcher 
203327 postgres  0:00 postgres: n8n n8n 10.163.243.235(49566) idle
203359 root      0:00 bash
203365 root      0:00 ps aux

В общем не очень много процессов. Как я понимаю, это один коннект, остальное - хз, коннекты или нет. Прямо сейчас потребление контейнера показывает 200 MB, в формулу 128 + 4*n не очень укладывается.

Насколько я понимаю, 200MB это working_set, или в терминах cgroup current - total_inactive_file.

vbr ★★★
() автор топика
Последнее исправление: vbr (всего исправлений: 1)