我在这里回答了另一个问题:
我不是在这里回答你的所有问题,而是你标题中的问题:
How to set shmall, shmmax, shmni, etc … in general and for postgresql
对于某些内核发行版,有一些设置会阻止内核将最大内存分配给单个进程:
Set Kernel Parameters
Modify the "/etc/sysctl.conf" file to include the lines appropriate to your operating system.
# 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
如果您的进程超出限制,尽管系统上报告了最大内存,但内核将终止该进程.
注意:请注意这些设置.您可能不希望使用该示例中的设置,因为我从环境中的服务器中提取它们.</