消息队列的设置

/etc/sysctl.conf
修改
kernel.msgmni=1000
kernel.msgmax=81920
kernel.msgmnb=163840

MSGMNB
每个消息队列的最大字节限制。该文件指定一个消息队列的最大长度(bytes)。

MSGMNI
整个系统的最大数量的消息队列。该文件指定消息队列标识的最大数目,即系统范围内最大多少个消息队列。

MSGGSZ
消息片断的大小(字节)。大于该值的消息被分割成多个片断。

MSGSEG
在单个队列里能存在的最大数量的消息片断。

MSGTQL
整个系统的最大数量的消息。

MSGMAX
单个消息的最大size。在某些操作系统例如BSD中,你不必设置这个。BSD自动设置它为MSGSSZ * MSGSEG。其他操作系统中,你也许需要改变这个参数的默认值,你可以设置它与MSGMNB相同。该文件指定了从一个进程发送到另一个进程的消息的最大长度(bytes)。进程间的消息传递是在内核的内存中进行的,不会交换到磁盘上,所以如果增加该值,则将增加操作系统所使用的内存数量。

SHMSEG
每个进程的最大数量的共享内存片断。

SHMMNI
共享内存片断数量的系统级的限制。

SHMMAX
单个共享内存片断的最大size。

SHMALL
可分配的共享内存数量的系统级限制。在某些系统上,SHMALL可能表示成页数量,而不是字节数量

[root@www ~]# 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 = 900000            =========MSGMNI //整个系统的最大数量的消息队列。
max size of message (bytes) = 65536        =========msgmax //单个消息的最大size。
default max size of queue (bytes) = 655360000  =====msgmnb //每个消息队列的最大字节限制。


[root@www ~]# ipcs -u
 
------ Shared Memory Status --------
segments allocated 1
pages allocated 8192
pages resident  2
pages swapped   0
Swap performance: 0 attempts     0 successes
 
------ Semaphore Status --------
used arrays = 4
allocated semaphores = 4
 
------ Messages: Status --------
allocated queues = 3
used headers = 0
used space = 0 bytes


 

原文地址:https://www.cnblogs.com/lein317/p/5067622.html