Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Увеличение shared_buffers для PostgreSQL


 

Увеличение shared_buffers для PostgreSQL


Делалось на FreeBSD


При увеличении значения shared_buffers получаем:
The PostgreSQL documentation contains more information about shared memory configuration.
FATAL:  could not create shared memory segment: Invalid argument
DETAIL:  Failed system call was shmget(key=5432001, size=1099882496, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  
You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  
To reduce the request size (currently 1099882496 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memory configuration.

 

Параметр shared_buffers должен быть меньше параметра ядра - kern.ipc.shmmax

Формула:
shared_buffers <= kern.ipc.shmmax / 1024 / 1024


Смотрю, что у меня:
sysctl -a | grep kern.ipc.shmmax
kern.ipc.shmmax: 536870912

Высчитываем (в итоге до 512 мегабайт возможное значение в теории):
shared_buffers <= 536870912 / 1024 / 1024 = 512

 

От параметра ядра kern.ipc.shmmax небудет толку если неправильно указан kern.ipc.shmall (определяет размер всей разделяемой памяти)
Обычно он равен - kern.ipc.shmmax / PAGE_SIZE
В свою очередь PAGE_SIZE обычно равен 4096 байт


Смотрим:
sysctl -a | grep kern.ipc.shmall
kern.ipc.shmall: 131072


Подводим итог: для того, чтоб задать shared_buffers чуть менее 512Мb нужны такие параметры:
kern.ipc.shmall: 262144
kern.ipc.shmmax: 1073741824 (при таком значении shared_buffers можно задать значение до 1024Mb, 1073741824/1024/1024 = 1024)


Смотрим общий вывод параметров:
ipcs -M
shminfo:
        shmmax:    536870912    (max shared memory segment size)
        shmmin:            1    (min shared memory segment size)
        shmmni:          192    (max number of shared memory identifiers)
        shmseg:          128    (max shared memory segments per process)
        shmall:       131072    (max amount of shared memory in pages)

 

Задаем параметры для старта системы:
/etc/sysctl.conf
kern.ipc.shmall=524288
kern.ipc.shmmax=2147483648
kern.ipc.shmmin=1


Задаем параметры на лету:
sysctl kern.ipc.shmall=524288
sysctl kern.ipc.shmmax=2147483648
sysctl kern.ipc.shmmin=1


Устанавливаем параметр в postgresql.conf:
shared_buffers = 1536MB

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект