消息队列
一、什么是消息队列
消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。
Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。
可以通过如下命令查看
1) proc/sys/kernel/msgmax
该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。
缺省设置:8192
2) /proc/sys/kernel/msgmnb
该文件指定一个消息队列的最大长度(bytes)。
缺省设置:16384
3) /proc/sys/kernel/msgmni
该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。
缺省设置:16
or
ulimit -q //一个消息的最长度
修改相关值
(以root身份)设置msgmax:
sysctl -w kernel.msgmax=16384
查看当前多少消息队列
使用这个命令,就可以看到当前有多个消息队列,以及其队列号
ipcs - show information on IPC facilities