消息中间件
Lin大坑haha~
这个作者很懒,什么都没留下…
展开
-
一次消息组件内存泄漏的排查
记录以下导致的原因,rocketmq中使用MappedByteBuffer处理大文件,其所对应的内存使用的是JVM堆外内存,JVM young gc和CMS gc并不能触发回收MappedByteBuffer对应的内存,只有full gc(stop the world的方式)可以使其回收内存,堆外直接内存会根据自己的情况(当需要新分配直接内存时,如果所剩堆外内存空间不够,第一次产生OutOfMem...原创 2020-02-27 01:33:37 · 447 阅读 · 0 评论 -
Rocketmq和Kafka用到的zero copy,以及存储方面的相关思考
因为项目原因做过消息组件的研发,总结以下rocketmq和kafka涉及到的零拷贝技术。RocketMQ1.mmap内存映射文件传统的读写数据,write/read系统调用, 必须先把数据从磁盘拷贝至到内核缓冲区中(页缓冲),然后再拷贝到用户进程(内核态-》用户态)。用了mmap,把内核中特定部分的内存空间映射到用户级程序的内存空间去。用户空间和内核空间共享一块相同的内存。内核在这块地址内...原创 2020-02-01 20:16:25 · 1102 阅读 · 0 评论 -
RocketMQ IPV6改造笔记
2018年做的ipv6整改,整理一下主要改造点1.消息ID长度ipv6的ip长度是128位16个字节,ipv4只有4个字节32位,因此,我需要判断当前环境是否是IPv6,如果是的话,生产者发送到broker的消息,落盘前生成的messageID需要变长。 public final static int MSG_ID_LENGTH = 8 + 8;// ipv4 public final ...原创 2020-01-31 22:10:55 · 1259 阅读 · 4 评论