jxnxsdengyu
作者jxnxsdengyu课题专家组·2020-04-08 18:11
系统工程师·江西农信

技术技巧---Linux进程间通信

字数 2203阅读 1665评论 0赞 1

一、摘要
进程间通信(狭义)的通信主要包括消息队列、共享内存、信号灯。本文主要讲解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


如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广