man proc
/proc/sys/kernel/sem (since Linux 2.4)
This file contains 4 numbers defining limits for System V IPC semaphores. These fields are, in order:
SEMMSL The maximum semaphores per semaphore set.
SEMMNS A system-wide limit on the number of semaphores in all semaphore sets.
SEMOPM The maximum number of operations that may be specified in a semop(2) call.
SEMMNI A system-wide limit on the maximum number of semaphore identifiers.
[root@web147 ~]# cat /proc/sys/kernel/sem
250 32000 32 128
我的是這樣,僅供參考
第一列,表示每個訊號集中的最大訊號量數目。
第二列,表示系統範圍內的最大訊號量總數目。
第三列,表示每個訊號發生時的最大系統運算元目。
第四列,表示系統範圍內的最大訊號集總數目。
訊號量(Semaphore),有時被稱為號誌,是在多線程環境下使用的一種設施,它負責協調各個線程, 以保證它們能夠正確、合理的使用公用資源。Semaphore就像可以容納N人的房間,如果人不滿就可以進去,如果人滿了,就要等待有人出來。Semaphore的屬性如下:
SEMMSL
含義:每個訊號量set中訊號量最大個數 設定:最小250;對於processes參數設定較大的系統建議設定為processes+10
SEMMNI
含義:linux系統訊號量set最大個數 設定:最少128
SEMMNS
含義:linux系統中訊號量最大個數 設定:至少32000;SEMMSL * SEMMNI
SEMOPM
含義:semop系統調用允許的訊號量最大個數設定:至少100;或者等於SEMMSL
參考:
http://yusy1116.blog.163.com/blog/static/6467259220106821116449/
http://blog.csdn.net/leshami/article/details/8766256
sem其實是semaphores的縮寫,查看當前設定
[Oracle@test oracle]$ cat /proc/sys/kernel/sem
250 32000 100 128
4個資料分別對應
SEMMSL SEMMNS SEMOPM SEMMNI
當oracle DB初始化參數檔案中PROCESSES參數設定較大時,需要調整SEMAPHORES設定SEMMSL應該設定為伺服器中各個執行個體中最大的PROCESSES參數+10,例如,當最大的PROCESSES參數為5000時,SEMMSL應設定為5010。
SEMMNS參數應設定為SEMMSL*SEMMNI,接上例SEMMSL為5010,SEMMNS參數應為(5010*128)=641280。
SEMOPM參數應設定與SEMMSL參數相同,接上例此處應設定為5010
更改當前SEMAPHORES參數設定:
vim /etc/sysctl.conf --開機啟動載入核心參數
kernel.sem =5010 641280 5010 128
#sysctl -p --載入生效
btw : 查看oracle 的最大串連數
select * from v$license;
自從執行個體啟動以來,串連資料庫的使用者session的最大值(SESSIONS_HIGHWATER)和當前值(SESSIONS_CURRENT )