linux系統關於kernel.sem調優

datapeng發表於2018-08-21

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

全部清理掉後,重啟應用  比如
/opt/dell/srvadmin/sbin/srvadmin-services.sh stop

ipcs用法
ipcs -a  是預設的輸出資訊 列印出當前系統中所有的程式間通訊方式的資訊
ipcs -m  列印出使用共享記憶體進行程式間通訊的資訊
ipcs -q   列印出使用訊息佇列進行程式間通訊的資訊
ipcs -s  列印出使用訊號進行程式間通訊的資訊
ipcs -t   輸出資訊的詳細變化時間
ipcs -p  輸出ipc方式的程式ID
ipcs -c  輸出ipc方式的建立者/擁有者
ipcs -u  輸出當前系統下ipc各種方式的狀態資訊(共享記憶體,訊息佇列,訊號)

ipcrm用法
-m SharedMemory id 刪除共享記憶體標識 SharedMemoryID。與 SharedMemoryID 有關聯的共享記憶體段以及資料結構都會在最後一次拆離操作後刪除。
-M SharedMemoryKey 刪除用關鍵字 SharedMemoryKey 建立的共享記憶體標識。與其相關的共享記憶體段和資料結構段都將在最後一次拆離操作後刪除。
-q MessageID 刪除訊息佇列標識 MessageID 和與其相關的訊息佇列和資料結構。
-Q MessageKey 刪除由關鍵字 MessageKey 建立的訊息佇列標識和與其相關的訊息佇列和資料結構。
-s SemaphoreID 刪除訊號量標識 SemaphoreID 和與其相關的訊號量集及資料結構。
-S SemaphoreKey 刪除由關鍵字 SemaphoreKey 建立的訊號標識和與其相關的訊號量集和資料結構。

ipcrm -m 18602

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-2212415/,如需轉載,請註明出處,否則將追究法律責任。

相關文章