RocketMQ部署以及调优

作者&投稿:仲孙福 (若有异议请与网页底部的电邮联系)
~

RocketMQ的部署,这里不做太多的说明,因为官方文档上面写的已经非常清晰了,可以照着官方文档一顿操作,下面为官方文档的地址:
https://github.com/apache/rocketmq/tree/master/docs/cn

RocketMQ的调优其实在官方文档的最佳实践中也写的挺清晰的,可以直接参考官方文档,笔者记录的这主要是自己消化后,自己理解的一些东西。

备注:以下几个参数对所有的中间件都起作用,比如redis、kafka等

该参数有三个值可以选择:0、1、2
"0":在中间件系统申请内存对时候,os内核会检查可用内存是否足够,如果足够的话就分配给你,如果感觉剩余内存不是太够,干脆就直接拒绝申请,从而导致中间件申请内存失败,出现异常。
"1":所有可用的物理内存都允许分配给你,只要有内存就给你用,这样可以避免内存申请失败的问题,一般将这个参数的值调整为1。
"2":表示内核允许分配超过所有物理内存和交换空间总和的内存

该参数影响中间件系统可以开启线程的数量,如果参数的值太少,可能会造成有些中间无法开启足够的线程,从而导致出错,然后使中间件系统挂掉。该参数的默认值为:65536,这个默认值有时候是不够的,建议这个参数值调大10倍,为655360。

该参数是用来控制swap行为的,这个简单的来说,就是os会把一部分磁盘空间作为swap区域,然后如果有的进程现在可能是不太活跃,就会被操作系统把进程调整为睡眠状态,把进程中的数据放入磁盘上的swap区域,然后让该进程原来占有的内存空间腾出来,交给其他活跃的进程来使用。
将该参数的值设置为0 :意思就是尽量别把任何一个进程放到磁盘swap区域,尽量大家都用物理内存。
将该参数的值设置为100 :意思是尽量把一些进程给放到swap区域去,内存腾出来给活跃的进程使用。
默认该参数的值为60 :有点偏高,可能会导致我们的中间件运行不活跃的时候被迫腾出内存空间然后放磁盘swap区域去。因此一般在生产环境建议将该值调小一些,比如10,让进程尽量使用物理内存,别放磁盘swap区域去。

该参数是用来控制linux上的最大文件链接数的,默认值为1024,一般肯定是不够的,因为在大量频繁的读写磁盘文件的时候或进行网络通信的时候,都会和这个参数有关系。如果采用默认值,可能会出现如下错误:error: too many openfiles。
总结:

因为RocketMQ是用java语言编写的所以在启动的时候需要使用虚拟机,所以对JVM进行调优。
在runbroker.sh启动脚本中可以看到如下内容:

对上面参数对解释:
-server :以服务器的模式启动。
-Xms8g -Xmx8g -Xmn4g : 默认的堆大小是8g,新生代是4g,这里根据实际生产服务器的内存大小,然后进行调整,比如:物理机是48g内存,堆内存可以给到20g,新生代给到8g,剩下的一些留给操作系统。
-XX:+UseG1GC -XX:G1HeapRegionSize=16m :选择G1垃圾回收器来做分代回收,对新生代和老年代都用G1回收。这里把G1的region设置为16m,是因为物理内存比较大,如果物理内存不多时,可以设置成2m,设置大,是可以防止region数量过多。region的含义是:G1的各代存储地址是不连续的,每一代都使用了n个不连续的大小相同的Region,每个Region占有一块连续的虚拟内存地址,如下图所示:

在rocketmq/distribution/target/apache-rocketmq/conf/dledger目录下面的配置文件中,可以找到sendMessageThreadPoolNums=16参数,该参数的意思是:RocketMQ内部用来发送消息的线程池的线程数量,默认是16,如果机器的CPU是24核的话,该参数的值可以设置成24或者30




消息中间件(MQ)的技术选型(Kafka、RabbitMQ、RocketMQ)
优点: RocketMQ几乎同时解决了Kafka和RabbitMQ的缺陷。它的吞吐量也非常高,单机可以达到10万的QPS以上,而且可以保证高可用性,并且可以通过配置达到数据保证不会丢失,可以部署大规模的集群,还支持各种高级功能,比如说延迟消息、事务消息、消息回溯、死信队列、消息积压等。而且RocketMQ是利用java开发的...

RocketMQ 千锤百炼哈啰在分布式消息治理和微服务治理中的实践
例如:MQ 可以通过同城跨可用区主从交叉部署、动态将主题和消费组迁移到灾备集群、多活等方式进行解决。 需要的监控信息 常用治理措施 如果说这些关键指标中哪一个最重要?我会选择集群中每个节点的心跳检测,即:响应时间( RT ),下面看看影响 RT 可能哪些原因。 我们总会遇到坑,遇到就把它填了。 ** RocketMQ ...

rocketmqhttp客户端自动掉线
rocketmqhttp客户端自动掉线是因为网络问题。重新登录一下账号就可以了。rocketmqhttp是阿里云正式商用的产品,目前在阿里多个地域(Region)提供了高可用消息云服务,单个域内采用多机房部署,可用性极高。

松下显示hh是什么故障?
Consumer也由用户部署,支持PUSH和PULL两种消费模式,支持集群消费和广播消息,提供实时的消息订阅机制。5)大致流程 Broker在启动的时候会去向NameServer注册并且定时发送心跳,Producer在启动的时候会到NameServer上去拉取Topic所属的Broker具体地址,然后向具体的Broker发送消息。具体如下图:2.RocketMQ的消息领域...

阿里云的主要功能是什么?
消息队列MQ:ApacheRocketMQ商业版企业级异步通信中间件 分布式关系型数据库服务DRDS:水平拆分\/读写分离的在线分布式数据库服务 云服务总线CSB:企业级互联网能力开放平台 业务实施监控服务ARMS:端到端一体化实时监控解决方案产品 9、分析: E-MapReduce:基于Hadoop\/Spark的大数据处理分析服务 云数据库HybirdDB:基于Greenplum...

什么是消息中间件?
缺点:由于历史悠久,历史包袱较多,版本更新很缓慢。集群模式需要依赖Zookeeper实现。最新架构的产品被命名为Apollo,号称下一代ActiveMQ,目前案例较少。2. RocketMQ\/Kafka 优点:专为海量消息传递打造,主张使用拉模式,天然的集群、HA、负载均衡支持。话说还是那句话,适合不适合看你有没有那么大的量。...

springcloud的远程调用?
?160.SpringCloudStream集成RocketMQ对象标签消息 ?161.SpringCloudStream问答交流dubbo和springcloud区别是什么? dubbo和springcloud区别是: 1、初始定位不同:?SpringCloud定位为微服务架构下的一站式解决方案;Dubbo是SOA时代的产物,它的关注点主要在于服务的调用和治理。 2、生态环境不同:?SpringCloud依托于Spring平台,...

SpringCloud微服务组件介绍
特点: 屏蔽底层 MQ 实现细节,Spring Cloud Stream 的 API 是统一的。如果从 Kafka 切到 RocketMQ,可以直接修改配置。 与 Spring 生态整合更加方便。Spring Cloud Data Flow的流计算都是基于 Spring Cloud Stream;Spring Cloud Bus 消息总线内部也是用的 Spring Cloud Stream。配置中心功能:分布...

自学Java如何入门?
中间件板块是大型互联网项目中必备的。服务中间件可以帮助各子模块间实现互相访问,消息共享或统一访问等功能。其包括远程服务框架中间件,例如阿里(Apache)的RPC框架Dubbo等;消息队列中间件,例如:阿里巴巴开源分布式中间件RocketMQ、高吞吐量消息发布和流处理服务Kafka等。学习服务中间件是中级JavaEE工程师...

零基础如何自学java?
关于自学,先提几条建议,望采纳!找一个行业当中的师傅进行规划和指导。每天规划好学习时间,不要中断。先掌握了解知识体系后编写项目,边抓细节。俗话说态度决定一切,一个人的学习态度相当重要,而一个良好的态度不仅会提高你的效率,而且还会影响效果。学习编程是一个漫长而痛苦的过程,需要持之以恒...

张家口市15568677236: 如何对hadoop平台进行优化和维护 -
印魏复方: (1) 从应用程序角度进行优化.由于mapreduce是迭代逐行解析数据文件的,怎样在迭代的情况下,编写高效率的应用程序,是一种优化思路.(2) 对Hadoop参数进行调优.当前hadoop系统有190多个配置参数,怎样调整这些参数,使hadoop作业运行尽可能的快,也是一种优化思路.(3) 从系统实现角度进行优化.这种优化难度是最大的,它是从hadoop实现机制角度,发现当前Hadoop设计和实现上的缺点,然后进行源码级地修改.该方法虽难度大,但往往效果明显.

张家口市15568677236: java架构师主要是干什么的? -
印魏复方: 想成为java架构师,首先你自身得是一个高级java攻城狮,会使用各种框架并且很熟练,且知晓框架实现的原理. 比如,你要知道,jvm虚拟机原理、调优;懂得jvm能让你写出的代码性能更优化;还有池技术:什么对象池、连接池、线程池等等...

张家口市15568677236: spark 跑spark sql时cpu利用率特别高怎么办 -
印魏复方: 优化过程中常用到方法 查看查询的整个运行计划 scala>query.queryExecution 查看查询的Unresolved LogicalPlan scala>query.queryExecution.logical 查看查询的Analyzed LogicalPlan scala>query.queryExecution.analyzed 查看优化后的...

张家口市15568677236: 想做程序员做后端都需要掌握哪些知识 -
印魏复方: 目前掌握的仅能:1,研发(基本吧,产品总得有人来做)2,调优(主要是Mysql调优,在符合业务需求的情况下尽可能提高TPS)3,运维(小公司不会像大公司一样还标配运维,通常后端兼任运维职能) 扩展下:研发:php入行,选个好框架...

张家口市15568677236: 请问,如何调整map slot和reduce slot数目?使得最优??
印魏复方: 1.jpg 调优,目前还没有发现特定的规律,只能根据自己的环境和调优的原则来优化: slot的理解如下: 1.在Hadoop中,计算资源是用槽位表示的.slot分为两种:Map Slot和Reduce Slot.每种slot代表一定量的资源,且同种slot是同质的,也就...

张家口市15568677236: 数据库调优的方法有哪些 -
印魏复方: 1.引言 数据库调优可以使数据库应用运行得更快,它需要综合考虑各种复杂的因素.将数据均 匀分布在磁盘上可以提高I/O 利用率,提高数据的读写性能;适当程度的非规范化可以改善 系统查询性能;建立索引和编写高效的SQL 语句能有效避...

张家口市15568677236: Java中Set、List、Map集合类(接口)的特点及区别.分别有哪些常用实现类. -
印魏复方: list与Set、Map区别及适用场景1、List,Set都是继承自Collection接口,Map则不是2、List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(注意:元素虽然无放入顺序,但是元素在set中的...

张家口市15568677236: 雷网主机如何对MySQL服务器进行调优? -
印魏复方: 如今,社会讲求的就是快速,什么事都要有效率,当然MySQL服务器也是要有效率.开发人员不断地开发和部署使用LAMP(Linux?、Apache、MySQL 和 PHP/Perl)架构的应用程序.但是,服务器管理员常常对应用程序本身没有什么控制能力...

张家口市15568677236: 什么时候才用的到jvm调优,为什么要调优,有人能指教一下吗 -
印魏复方: JVM是最好的软件工程之一,它为Java提供了坚实的基础,许多流行语言如Kotlin、Scala、Clojure、Groovy都使用JVM作为运行基础.一个专业的Java工程师必须要了解并掌握JVM,接下来就给大家分享Java基础知识中JVM调优相关知识点. ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网