之路教程 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 服务器中更改内核信号量限制。
设置信号量限制的内核参数
设置信号量限制的内核参数是:
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