Контекст: веб-сервер, размещенный в DigitalOcean, с базой данных PostgreSQL.
Мы сталкивались с повторяющимися сбоями базы данных по неизвестным причинам. В конце концов я обнаружил ошибочный запрос, который перегружал систему, и почти уверен, что проблема именно в нем.
Однако, когда я исследовал сбои postgres, я наткнулся на публиковать упоминание о настройке системы ядро.shmmax
потому что это связано с настройкой postgres общий_буфер
.
Оказывается, когда я бегу кошка /proc/sys/kernel/shmmax
его значение 18446744073692774399
! Не знаю почему, но это кажется безумием.
В любом случае, почему это значение может быть таким большим и каким оно должно быть?
Использование памяти в нашем дроплете (всего 16 ГБ) раньше составляло около 87%. После исправления моего запроса при перезапуске сервера он оставался ниже примерно на 47% и со временем вернулся примерно к 84% через несколько часов. Там нет системного администратора, но я предположил, что может быть задействовано высокое значение sshmax?
Другие соответствующие настройки postgres:
общие_буферы = 4 ГБ
макс_подключения = 300
max_wal_size = 2 ГБ
checkpoint_timeout = 15 минут
checkpoint_timeout = 15 минут
контрольная точка_completion_target = 0,9
Мой вопрос касается высокого значения shmmax и того, как это может быть связано с ошибочными настройками postgres и почему использование памяти увеличивается таким образом.