kernel.sem信号量参数调优,以及ipcs信号量队列查询

首先介绍下kernel.sem 这个参数

cat /proc/sys/kernel/sem
250     32000   32      128
或者
ipcs -ls

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

我机器上的信号队列arrays 
ipcs -a | wc -l
144

144>128 为什么超了,这个我也不懂,但是我的openmanage插件一直超时,而且无法启动,无法停止,真TM的 查这个问题花了我好长时间

首先 介绍下kernel.sem这4个参数的意义

cat /proc/sys/kernel/sem
250     32000   32      128

250       SEMMSL    max semaphores per array     信号集容纳最大信号数量   
32000     SEMMNS    max semaphores system wide   所有信号的最大数量
32        SEMOPM    max ops per semop call       调用单个信号集中最大信号数量
128       SEMMNI    max number of arrays         信号集的最大值

这个是网上找的,不过感觉不太对,按照我们的思路来

首先

max semaphores per array
max number of arrays

这2个参数肯定是不够的,我们先调高一点

echo "500 641280 500 500" > /proc/sys/kernel/sem

调整完了

我们利用

ipcs -a | grep nagios | wc -l
90                                      查看当前nagios用户信号数量

然后把它全清理掉。

ipcs -a | grep nagios | awk '{print $2}' | xargs -n1 ipcrm -s                  关于ipcs和ipcrm这2个命令的解释网上很多,我就不再说了
ipcs -a | grep nagios | wc -l
0

全部清理掉后,重启应用  比如

/opt/dell/srvadmin/sbin/srvadmin-services.sh stop



你可能感兴趣的:(kernel.sem信号量参数调优,以及ipcs信号量队列查询)