一、摘要
进程间通信(狭义)的通信主要包括消息队列、共享内存、信号灯。本文主要讲解Linux进程间通信的相关操作,包括使用ipcs命令查看是否存在瓶颈或问题、修改相关系统参数。
二、IPCS 讲解
ipcs命令可用于显示消息队列、共享内存、信号灯等信息,选项有:
q 显示消息队列
s 显示信号灯
m 显示共享内存
a 详细信息
l 显示详细限制信息
u 详细状态信息
p pid 号
t time
c creator
示例:
查看所有信息:
$ ipcs -a
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
查看信号灯信息:
[root@localhost ~]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x00000000 0 root 600 1
0x00000000 65537 root 600 1
查看共享内存、队列的相关进程信息
$ ipcs -p
------ Shared Memory Creator/Last-op --------
shmid owner cpid lpid
------ Message Queues PIDs --------
msqid owner lspid lrpid
查看共享内存信息
[root@localhost ~]# ipcs -m
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x6c6c6536 0 root 600 4096 0
查看队列信息
[root@localhost ~]# ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
三、相关系统参数
1、查看参数
[root@localhost ~]# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 67108864
max total shared memory (kbytes) = 17179869184
min seg size (bytes) = 1
------ 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
------ Messages: Limits --------
max queues system wide = 3718
max size of message (bytes) = 65536
default max size of queue (bytes) = 65536
2、参数修改 临时调整可使用sysctl命令
sysctl -w kernel.shmmni=4096
永久修改需要调整/etc/sysctl.conf 文件
#kernel.sem = (SEMMNI) (SEMMSL) (SEMMNS) (SEMOPM)
kernel.sem = 250 32000 32 128
kernel.shmmni=4096
kernel.shmmax=68719476736
kernel.shmall=4294967296
kernel.msgmni=1024
kernel.msgmax = 65536
kernel.msgmnb = 65536
重启操作系统或执行以下操作
sysctl -p