linux系统增加消息队列长度
来源:互联网 发布:mac上怎么裁剪图片 编辑:程序博客网 时间:2024/04/27 22:59
经常在创建消息队列呢,报错No space left on device。
这时,可以通过修改MSGMNI这个参数来解决。
MSGMNI--- 这个参数决定了系统中同时运行的最大的message queue的个数。
作用:该值定义了消息队列的最大长度;要使db2(7.1版)正常运行,其最小值为128;
对于高负荷的DB2服务器,可将该值调整为 >= 1024;
调谐:对于2.4.6版本的内核,其缺省值为16;可用以下两种方法改变该值
(1)如果只是临时变动,在命令行输入
bash# sysctl -w kernel.msgmni=128
(2) 如果要在系统启动时改变该值,可在/etc/sysctl.conf文件中加入以下几句:
# Sets maximum number of message queues to 128
# Set this to 1024 or higher on production systems
kernel.msgmni = 128
(用ipcs -l 命令来查看当前ipc 参数的各种设置)
P.S.
另外几个参数,
kernel.msgmni
kernel.msgmax
kernel.msgmnb
-----------------------------------------------------------------------------------
linux关于消息队列中消息的大小的限制
在消息队列中,例如函数msgsnd(int msqid, const void* msgp, size_t msgsz, int msgflg);这个函数调用的时候,msgsz最大只能为8192,也就是2的16次方。可以看出这里的msgsz大小限制在一个short型。超过这个大小就会出错——invalid argument。并不是其他人所说的只要msgsz是mtext的大小就不会出错,如果sizeof(mtype)+sizeof(mtext)<=8192时,msgsz为sizeof(mtype)+sizeof(mtext)大小也没有关系。
当然msgsz这个大小也不是不可以改变,如果要变,就去内核代码里面关于实现消息队列的程序中把这个限制改变一下就好。(我没试过,应该可以),一般是在内核源码中的ipc文件夹中会有mqueue.c这个c语言程序文件,里面会定义DFLT_MSGSIZEMAX为8192,这应该就是为什么msgsz最大为8192的原因,如果要改,可以改掉,然后重新编译内核。
- linux系统增加消息队列长度
- linux系统增加消息队列长度MSGMNI
- Linux下 用消息队列收发长度不同的消息
- 关于linux系统消息队列的问题
- 修改消息队列 最大长度
- ucosII 消息队列 消息长度计算
- C#-消息队列系统
- 四.Linux环境进程间通信(三):消息队列:系统V消息队列
- [linux系统编程]System V IPC 消息队列
- Linux系统编程——进程间通信:消息队列
- Linux系统编程——进程间通信:消息队列
- Linux中posix消息队列系统函数mq_timedreceive()谨慎使用
- Linux系统下-进程间通信(消息队列-详解)
- 【Linux系统编程】进程间通信--消息队列
- Linux系统消息队列框架Kafka单机安装配置
- Linux系统编程——进程间通信:消息队列
- Linux系统下-进程间通信(消息队列-详解)
- Linux消息队列编程
- Adobe推出数字出版套装软件单机版
- 射频卡的印刷方法
- Objective-C 2.0 学习笔记三(数据类型和表达式)
- java多线程学习2-线程栈模型与线程的变量
- android 分辨率标题栏及状态栏高度
- linux系统增加消息队列长度
- 模板方法学习资源
- webkit内核源码分析二
- RestEasy用户指南---第6章.@QueryParam
- Ajax实现省市二级联动(源代码)
- webkit内核源码分析三
- Windows下通过VC++6.0编译live555工程(可调试)
- Powershell uses .Net DLL is pretty simple
- webkit内核源码分析四