mqueue系列限制,限制msg条数,msg大小,queue个数。其中msg条数太小,对于有大量消息的系统,很容易导致queue满。如何修改呢?
几个限制的缺省值:
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/msg_max
10
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/msgsize_max
8192
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/queues_max
256
此时,struct mq_attr 的mq_maxmsg成员变量如果超过msg_max,在mq_open时会报错。
mq_open error:Invalid argument
zhouhh@zhh64:~$ sudo cat 1000 >/proc/sys/fs/mqueue/msg_max
bash: /proc/sys/fs/mqueue/msg_max: 权限不够
zhouhh@zhh64:~$ sudo vi /proc/sys/fs/mqueue/msg_max
保存
"/proc/sys/fs/mqueue/msg_max" E667: 同步失败
所以不能直接修改/proc下面这些文件。
应该修改/etc/sysctl.conf
zhouhh@zhh64:~$ sudo vi /etc/sysctl.conf
增加:
#mqueue max
kernel.msgmnb = 6553500
kernel.msgmin = 6553500
kernel.msgmax = 6553500
保存,重启系统就已经修改过了。
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/msg_max
1000
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/msgsize_max
8192
zhouhh@zhh64:~$ cat /proc/sys/fs/mqueue/queues_max
255