修改posix msg queue的限制值

本文讨论了如何通过修改`/etc/sysctl.conf`文件来调整mqueue系列限制,以解决大量消息系统中队列容易满的问题。通过增加`kernel.msgmnb`, `kernel.msgmin`, 和 `kernel.msgmax`的值,可以扩大队列容量,避免消息丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值