kernel.sem信号量调优
一、kernel.sem 信号量
sem其实是semaphores的缩写,这个在oracle数据库配置的时候,会需要调整该值,对于一般的程序来说基本是用不到的。不过现网中也遇到过个别主机上zabbix agent信号量不够用的情况。其对应的有四个参数,具体如下:
1# cat /proc/sys/kernel/sem
2250 32000 32 128
3或者
4# ipcs -ls
5------ Semaphore Limits --------
6max number of arrays = 128
7max semaphores per array = 250
8max semaphores system wide = 32000
9max ops per semop call = 32
10semaphore max value = 32767
关于这四个参数的解释如下:
1cat /proc/sys/kernel/sem
2250 32000 32 128
3250 SEMMSL max semaphores per array #信号集容纳最大信号数量
432000 SEMMNS max semaphores system wide #所有信号的最大数量
532 SEMOPM max ops per semop call #调用单个信号集中最大信号数量
6128 SEMMNI max number of arrays #信号集的最大值
二、查看、增加与清理
信号量不够的时候有两种处理方法,一种是通过增加信息的值,另一种方法是删除某些信号量。
1、查看信号量
查看当前使用信号量情况的方法如下:
1# ipcs -a
2------ Message Queues --------
3key msqid owner perms used-bytes messages
4------ Shared Memory Segments --------
5key shmid owner perms bytes nattch status
60x00000000 0 zabbix 600 576 6 dest
70x00000000 32769 zabbix 600 3577056 6 dest
80x00000000 65538 zabbix 600 576 42 dest
90x00000000 98307 zabbix 600 16777216 42 dest
100x00000000 131076 zabbix 600 4194304 42 dest
110x00000000 163845 zabbix 600 4194304 42 dest
120x00000000 196614 zabbix 600 8388608 42 dest
130x00000000 229383 zabbix 600 12720 42 dest
140x00000000 262152 zabbix 600 8388608 42 dest
150x011434b6 20938761 root 600 1000 7
160x011434b9 20971530 root 600 1200712 7
170x00000000 557067 root 600 524288 2 dest
180x00000000 917516 root 600 524288 2 dest
190x00000000 17301517 root 600 524288 2 dest
200x00000000 1081359 root 600 16777216 2 dest
210x00000000 18808848 root 600 524288 2 dest
220x00000000 17432606 root 600 4194304 2 dest
23------ Semaphore Arrays --------
24key semid owner perms nsems
250x002fa327 65536 root 600 2
260x00000000 3407873 apache 600 1
270x00000000 3440642 apache 600 1
280x00000000 163843 apache 600 1
290x00000000 3473412 apache 600 1
300x00000000 3506181 apache 600 1
310x00000000 3538950 apache 600 1
320x00000000 3571719 apache 600 1
330x00000000 3604488 apache 600 1
这里输出的比较多,当然也可以只用ipcs -s只看信号量信息。
2、增加信号量
修改/etc/sysctl.conf文件,增加如下内容:
1kernel.sem =5010 641280 5010 128
使用sysctl -p生效,这个会开机的时候自动生效,临时生效也可以使用如下方法:
1echo "5010 641280 5010 128" > /proc/sys/kernel/sem
3、信号量的清理
信号量的清理使用ipcrm,具体如下:
1//查看当前zabbix用户信号数量
2# ipcs -a | grep zabbix | wc -l
390
4//清理zabbix用户的所有信号量
5# ipcs -a | grep zabbix| awk '{print $2}' | xargs -n1 ipcrm -s
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/kernel-sem/6122.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.