首先 熟悉 ipcs 和 ipcrm 命令:
ipcs用法
ipcs -a 是默認的輸出信息 打印出當前系統中所有的進程間通信方式的信息
ipcs -m 打印出使用共享內存進行進程間通信的信息
ipcs -q 打印出使用消息隊列進行進程間通信的信息
ipcs -s 打印出使用信號進行進程間通信的信息
ipcs -t 輸出信息的詳細變化時間
ipcs -u 輸出當前系統下ipc各種方式的狀態信息(共享內存,消息隊列,信號)
# ipcs -h ipcs provides information on ipc facilities for which you have read access. Resource Specification: -m : shared_mem -q : messages -s : semaphores -a : all (default) Output Format: -t : time -p : pid -c : creator -l : limits -u : summary -i id [-s -q -m] : details on resource identified by id usage : ipcs -asmq -tclup ipcs [-s -m -q] -i id ipcs -h for help.
ipcrm 命令
移除一個消息對象。或者共享內存段,或者一個信號集,同時會將與ipc對象相關鏈的數據也一起移除。當然,只有超級管理員,或者ipc對象的創建者纔有這項權利啦
ipcrm -M shmkey 移除用shmkey創建的共享內存段
ipcrm -m shmid 移除用shmid標識的共享內存段
ipcrm -Q msgkey 移除用msqkey創建的消息隊列
ipcrm -q msqid 移除用msqid標識的消息隊列
ipcrm -S semkey 移除用semkey創建的信號
ipcrm -s semid 移除用semid標識的信號
當前系統信號量限制:
# ipcs -ls
—— Semaphore Limits ——–
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 100
SEMMSL
含義:每個信號量set中信號量最大個數
設置:最小250;對於processes參數設置較大的系統建議設置爲processes+10
SEMMNI
含義:linux系統信號量set最大個數
設置:最少128
SEMMNS
含義:linux系統中信號量最大個數
設置:最少32000;SEMMSL * SEMMNI
SEMOPM
含義:semop系統調用允許的信號量最大個數
設置:最少100;或者等於SEMMSL
查看信號量設置:cat /proc/sys/kernel/sem
order:SEMMSL, SEMMNS, SEMOPM, SEMMNI
# cat /proc/sys/kernel/sem
250 32000 100 128
修改:
sysctl -w kernel.sem=”250 32000 100 128″
echo “kernel.sem=250 32000 100 128″ >> /etc/sysctl.conf