Linux 消息队列长度处理

问题:

在Linux 系统中通过消息队列进行进程间的通讯时,只要定义的BufSize小于1024,队列就能正常读写,当Size定义大于1024时,队列就无法成功。


处理步骤:

SystemV的消息队列

/etc/sysctl.conf

修改

kernel.msgmni=1000

kernel.msgmax=81920

kernel.msgmnb=163840

msgmni为MSGMNI,即系统的消息队列数目。平台每个DTA需要使用3个消息队列,即最大DTA数为1000/3。该参数应该比平台最大队列个数参数配置大。

msgmax为MSGMAX,即一个消息的字节大小。目前扩展值为8k,平台一个交易消息为4个字节,不会超过限制。

msgmnb为MSGMNB,即队列存放消息的总字节数。


POSIX消息队列

修改

fs.mqueue.msg_max=1000  <-消息个数

fs. mqueue. msgsize_max=8192 <-消息长度

另外操作系统对文件大小的限制ulimit -q你可以看到POSIX消息队列的最大容量

cat /proc/sys/kernel/msgmax

cat /proc/sys/kernel/msgmni

cat /proc/sys/kernel/msgmnb

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为了执行权限检查,传统的 UNIX 实现区分两种类型的进程:特权进程(其有效用户 ID 为0,称为超级用户或 ro...
    hanpfei阅读 9,593评论 0 1
  • TCP/IP调优参数: /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲 /p...
    运维小子阅读 10,496评论 0 9
  • 无论你有多么聪明,多么富有,多有权势,人愤怒的那一个瞬间,智商是零,过一分钟后恢复正常。 记住:千万不要愤怒的...
    静待花开jl阅读 1,067评论 0 1
  • 独倚朱阑梦婵娟,红袖添香伴夜寒。 无可奈何心上事,断肠遥寄盼君还。
    曾识人间烟火阅读 1,760评论 0 1
  • 在上大学以前,因为一次偶然的拼车,遇到一个武大研究生(他大学并不是在武大),他跟我聊天得知我刚高考完,我就顺势向他...
    岸落林溪阅读 26,105评论 3 7

友情链接更多精彩内容