更新时间:2019-03-19 09:56:29浏览次数:1+次
在进行跨进程通信的时候,经常会借助系统的消息队列来实现。默认情况下,消息队列的大小是有限的。如果是在高并发的场景下运行,队列满了之后,就会导致后续的消息无法进入消息队列而丢失,进而导致通信失败,功能失效。
导致队列满的原因一般是:
1.取出消息速度小于存入消息速度
2.一些消息因为逻辑问题无法取出而一直积压在消息队列中(程序逻辑漏洞)
第二点我们是要在程序设计上规避,而第一点则是因为消息队列较小,需要扩大容量,来做缓存。这样尽管取出的速度较慢,依然不会丢失消息。
下面是修改Linux消息队列大小的方法:
打开配置文件/etc/sysctl.conf,添加内容如下:
kernel.msgmni=2000
kernel.msgmax=1024
kernel.msgmnb=204800
最后要在命令行执行:
sysctl -p
才会生效哦。
相关资讯