之路教程 https://onitr oad .com

更改信号量限制

如果需要更改限制,则应考虑到 (max number of arrays)*(max semaphores per array) >= (max semaphores system-wide) 。
如果受每个具有最大信号量的可能数组数量的限制,则无需在系统范围内拥有更多信号量。

例如:

# sysctl -a| grep kernel.sem
kernel.sem = 250 32000 32 128

对于这个例子,我们需要将每个数组的最大信号量限制从 128 增加到 192.
系统范围内的最大信号量也可以增加到 48000(250*192 = 48000 >= 32000)或者保持为 32000。
在这种情况下,它保持在32000。

动态设置内核参数,例如:无需重启服务器。

# sysctl -w kernel.sem="250 32000 32 192"
kernel.sem = 250 32000 32 192

如果系统一切正常,请通过将内核参数添加到 /etc/sysctl.conf 文件来修改内核参数,以确保在服务器重新启动后该值仍然存在。

# cat /etc/sysctl.conf | grep kernel.sem
kernel.sem = 250 32000 32 192

如果选择直接在文件中设置而不使用 sysctl -w,则需要重新加载文件:

# sysctl -p

我们可以通过以下方式验证当前设置的限制:

# ipcs -ls
------ Semaphore Limits -------
max number of arrays = 192
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767

信号量就像一个计数器,用于控制多个进程对共享资源的访问。
它通常用作锁定机制,以防止进程访问特定资源,而另一个进程正在对其执行操作。
信号量值可以递增或者递减,直到由变量 SEMVMX("semaphore max value 信号量最大值") 设置的最大值。

如何在 CentOS/RHEL 中更改内核信号量限制

这篇文章解释了如何在 CentOS/RHEL 服务器中更改内核信号量限制。

设置信号量限制的内核参数

设置信号量限制的内核参数是:

kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI
SEMMSL - max semaphores per array
SEMMNS - max semaphores system wide
SEMOPM - max ops per semop call
SEMMNI - max number of arrays
日期:2020-09-17 00:13:11 来源:oir作者:oir