CentOS內(nèi)核信號量

1)前言

????????最近在啟動數(shù)據(jù)庫的時候遇到了一個報錯,大概就是信號量不足的報錯,入職這么久還是這一次遇到這個問題,所以查了一些資料,記錄一下。

2)什么是信號量

? ??????信號量類似于一個計數(shù)器,主要用于控制多個進程對共享資源的訪問,以防止進程訪問特定的資源。網(wǎng)上看到一個比較容易理解的例子:停車場。如果停車場只能停三輛車,那么信號量就相當于3,進去一輛信號量就減1,出去一輛就加1,當為0時,就等待。每輛車就好比一個線程,停車場就是公共資源,信號量就是一個非負整數(shù)。在信號量上有兩種操作,wait和release,當wait時,要么通過并將信號量減1,要么等待知道信號量值為大于1或者超時。當為release時,對應(yīng)的就是車離開停車場,釋放了公共資源,信號量加1。

3)如何查看kernel.sem大小

? ? ? ? 第一種方法:執(zhí)行 cat /proc/sys/kernel/sem

? ? ? ? 執(zhí)行結(jié)果:250? ? ? ? 32000 ? ? ? ? 100?????????? 128

? ? ? ? 注:kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI,其參數(shù)含義:

? ??????SEMMSL :用于控制每個信號集的最大信號數(shù)量。

? ??????SEMMNS:用于控制整個 Linux 系統(tǒng)中信號(而不是信號集)的最大數(shù)。

? ??????SEMOPM: 內(nèi)核參數(shù)用于控制每個 semop 系統(tǒng)調(diào)用可以執(zhí)行的信號操作的數(shù)量。semop 系統(tǒng)調(diào)用(函? ? ? ? ? ? 數(shù))提供了利用一個 semop 系統(tǒng)調(diào)用完成多項信號操作的功能。一個信號集能夠擁有每個信號集中最大數(shù)? ? ? ? ? 量的SEMMSL 信號,因此建議設(shè)置 SEMOPM 等于SEMMSL 。

? ? ? ? SEMMNI:內(nèi)核參數(shù)用于控制整個 Linux 系統(tǒng)中信號集的最大數(shù)量。

? ? ? ? 第二種方法:執(zhí)行ipcs -ls

? ? ? ? ?執(zhí)行結(jié)果:

????????------ 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

? ? ? ? 第三種方法:執(zhí)行sys_ctl -a | grep kernel.sem

? ??????kernel.sem = 250 32000 32 128

4)如何修改kernel.sem

? ? ? ? 第一種方法:動態(tài)設(shè)置內(nèi)核參數(shù)

? ??????sysctl -w kernel.sem="250 32000 32 256"

? ? ? ? 第二種方法:永久生效,修改sysctl.conf文件

? ? ? ? echo "kernel.sem = 250 32000 32 256" >> /etc/sysctl.conf

? ? ? ? 執(zhí)行sysctl -p生效

? ??????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容