Как установить shmall, shmmax, shmmin, и т.д. … в целом и для postgresql

Это просто, потому что маршрутизатор, который находится на Транзитном участке 5, фильтрует запрос traceroute.
Это не проблема, нет никакого влияния для Вашего сервера, и Вы ничего не можете сделать об этом.

11
задан 30 October 2019 в 13:43
4 ответа

Я ответил на это на другой вопрос здесь:

Git не отправляет сообщение с ошибкой «недостаточно памяти»

Я отвечаю не на все ваши вопросы здесь, а на вопрос в вашем title:

Как установить shmall, shmmax, shmmni и т.д. в целом и для postgresql

В некоторых дистрибутивах ядра есть настройки, которые не позволяют ядру выделять максимальную память одному процессу:

Установить ядро Параметры

Измените файл /etc/sysctl.conf , чтобы включить в него строки, соответствующие вашей операционной системе:

# Red Hat Enterprise Linux 3.0 and CentOS 3.x 
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.shmall = 2097152
kernel.shmmin = 1
kernel.shmseg = 10

# semaphores: 
semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128
fs.file-max = 65536

# Red Hat Enterprise Linux 4.0 and CentOS 4.x 
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.shmall = 2097152

Если ваш процесс превышает ограничения, ядро ​​завершит процесс, несмотря на сообщенный максимальный объем памяти доступны в вашей системе.

Примечание: будьте осторожны с этими настройками. Вероятно, вы не захотите использовать настройки в этом примере, поскольку я взял их с сервера в нашей среде.

Несколько дополнительных замечаний:

Для обновления и тестирования настроек ядра с помощью sysctl используйте следующие команды:

Список текущих настроек:

sysctl -A | grep shm
sysctl -w kernel.shmmax=<value> to write in sysctl.conf
sysctl -p /etc/sysctl.conf to read/reload the values from sysctl.conf

Отключите безопасный Linux, отредактировав / etc / selinux / config , убедившись, что флаг SELINUX установлен следующим образом:

SELINUX=disabled

Это уместно? Если нет (или не обязательно), в этом случае будет это уместно?

Параметры ядра обычно более строго определены в средах центров обработки данных, когда провайдеры Интернет-услуг не хотят, чтобы один процесс клиента занимал все ресурсы на общем сервере.

Обычно вам не нужно устанавливать параметры памяти ядра, если только у вас нет процесса, который ядро ​​убивает из-за нехватки ресурсов.

В некоторых случаях postgres может также выделить больше памяти для страниц определенного размера, чем что доступно в общей памяти:

* The PostgreSQL server failed to start. Please check the log output:
2011-11-04 05:06:26 UTC FATAL: could not create shared memory segment: Invalid
argument
2011-11-04 05:06:26 UTC DETAIL: Failed system call was shmget(key=5432001, size
=161849344, 03600).
2011-11-04 05:06:26 UTC HINT: This error usually means that PostgreSQL’s reques
t 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 161849344 bytes), reduce PostgreSQL’s shared
_buffers parameter (currently 19200) and/or its max_connections parameter (curre
ntly 53).
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 recon
figuring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memo
ry configuration.
…fail!

Ошибки, подобные приведенному выше примеру, могут быть устранены путем настройки параметров ресурсов ядра. Рекомендуемые параметры и методы для определения параметров ресурсов подробно описаны здесь:

http://www.postgresql.org/docs/9.1/static/kernel-resources.html

Однако вы действительно не эти настройки не нужно трогать, если только вы не повторно сталкиваются с ситуациями нехватки ресурсов, связанными с процессом postgres. Эти ситуации чаще всего возникают в общих средах или серверах с небольшими выделенными им ресурсами.

Кто-нибудь может объяснить, как их действительно настроить с нуля?

Что касается настройки Postgres, вам следует прочитать следующее:

] http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

11
ответ дан 2 December 2019 в 21:50

Эти конфигурации ядра являются глобальными, а не зависят от процесса, поэтому их целесообразно установить в sysctl.conf .

1
ответ дан 2 December 2019 в 21:50

Это зависит от того, что еще работает на сервере, если это чистый сервер PostgreSQL, то PostgreSQL - подходящее место для поиска этих настроек.
Если вы запускаете другие приложения / службы, которым требуется определенная память, вам нужно будет найти оптимальные настройки между этими различными приложениями.

Если вы видите повышение производительности в базе данных и отсутствие потери производительности в других приложениях, тогда я бы не беспокоился об этом.

Обычно базы данных наиболее чувствительны к настройкам памяти, поскольку они также, скорее всего, являются узким местом для производительности приложений, поэтому имеет смысл оптимизировать вашу систему для БД.

0
ответ дан 2 December 2019 в 21:50

Ой !! Я нахожу замечательный инструмент для расчета конфигурации optimus mem нашего сервера postgresql здесь.

http://pgtune.leopard.in.ua/

2
ответ дан 2 December 2019 в 21:50

Теги

Похожие вопросы