当前位置: 技术问答>linux和unix
linux 消息队列长度的问题
来源: 互联网 发布时间:2016-05-10
本文导语: 操作系统是RH4.5,通过消息队列进行进程间的通讯时,只要定义的BufSize为1000,队列就能正常读写,当Size定义为2000时,队列就无法成功。经过查询后发现是linux内核对消息队列通讯最大长度的限制。 请问...
操作系统是RH4.5,通过消息队列进行进程间的通讯时,只要定义的BufSize为1000,队列就能正常读写,当Size定义为2000时,队列就无法成功。经过查询后发现是linux内核对消息队列通讯最大长度的限制。
请问我该如何修改内核参数,以达到能够进行大数据量的消息队列通讯。谢谢!
请问我该如何修改内核参数,以达到能够进行大数据量的消息队列通讯。谢谢!
|
/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,即队列存放消息的总字节数。
修改
kernel.msgmni=1000
kernel.msgmax=81920
kernel.msgmnb=163840
msgmni为MSGMNI,即系统的消息队列数目。平台每个DTA需要使用3个消息队列,即最大DTA数为1000/3。该参数应该比平台最大队列个数参数配置大。
msgmax为MSGMAX,即一个消息的字节大小。目前扩展值为8k,平台一个交易消息为4个字节,不会超过限制。
msgmnb为MSGMNB,即队列存放消息的总字节数。