Linux shmmax и shmall - как правильно установить модуль? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть сервер с 16 ГБ памяти.

Теперь мне нужно установить shmmax и shmall, потому что сервер по умолчанию (проверено с помощью ipcs -l)

------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398509465599
min seg size (bytes) = 1

------ Semaphore Limits --------
max number of arrays = 32000
max semaphores per array = 32000
max semaphores system wide = 1024000000
max ops per semop call = 500
semaphore max value = 32767

Кажется ужасным, shmall и shmmax больше моих 16 ГБ.

Поэтому я хочу изменить настройку на

shmmax -> 16GB/4
shmall -> 16GB/2

Но я не могубудьте уверены, какую единицу я установил

shmmax --> 4420960256 
shmall --> 8620960256

Но является ли единица измерения моим номером?Байт или КБ?Потому что ipcs -l показывает КБ ....

echo "kernel.shmmax=4420960256" >> /etc/sysctl.conf
echo 4420960256> /proc/sys/kernel/shmmax
echo "kernel.shmall=8620960256" >> /etc/sysctl.conf
echo 8620960256> /proc/sys/kernel/shmall

спасибо за помощь, но postgresql просто вылетает и убивается вчера, он показывает:

This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 4420960256 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

мои настройки =>

shared_buffers = 4GB
effective_cache_size = 12GB

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Просто используйте:

lsipc

На моем Ubuntu 16.04 LTS я получаю:

RESOURCE DESCRIPTION                                    LIMIT USED  USE%
MSGMNI   Number of message queues                       32000    0 0.00%
MSGMAX   Max size of message (bytes)                     8192    -     -
MSGMNB   Default max size of queue (bytes)              16384    -     -
SHMMNI   Shared memory segments                          4096   20 0.49%
SHMALL   Shared memory pages                          2097152 4915 0.23%
SHMMAX   Max size of shared memory segment (bytes) 4294967296    -     -
SHMMIN   Min size of shared memory segment (bytes)          1    -     -
SEMMNI   Number of semaphore identifiers                  128    0 0.00%
SEMMNS   Total number of semaphores                     32000    0 0.00%
SEMMSL   Max semaphores per semaphore set.                250    -     -
SEMOPM   Max number of operations per semop(2)            100    -     -
SEMVMX   Semaphore max value                            32767    -     -

, в котором четко указывается единица измерения для значений, указанных в /etc/sysctl.conf.Так что для меня SHMMAX в байтах, а SHMALL в страницах (см. getconf PAGE_SIZE).

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

Просто оставьте настройку такой, какая она есть - по сути, это означает «неограниченный» в вашем случае.На одно меньшее ограничение, от которого вы можете биться головой!

Количество разделяемой памяти, выделенной PostgreSQL, фиксировано и в основном определяется shared_buffers.Просто убедитесь, что вы не установили это превышение вашей оперативной памяти (4 ГБ было бы идеально), и никакой опасности нет.

Для справки: эксперименты на моей системе показывают, что единица kernel.shmmaxбайт, в то время как единица kernel.shmall является страницами памяти (отметьте getconf PAGESIZE).

...