RocketMQ使用及常见问题

RocketMQ使用及常见问题

2023年7月3日发(作者:)

RocketMQ使⽤及常见问题前⾔本⽂档是针对RocketMQ使⽤及常见问题的说明。⼀.获取项⽬、安装包及⽂档1. alibaba/RocketMQ2. Download the latest release package3. Get the latest document & Who using RocketMQ⼆.Linux常⽤命令1.切换⽤户1)su – root2)普通⽤户登录,切换为root⽤户。3)带杠表⽰表⽰切换到当前⽤户⽬录~2.查询已安装的jdk1)rpm -qa|grep jdk2)rpm -qa 查询所有rpm包。q是查询,a是all。竖杠是管道操作符,就是把查询结果作为输⼊给grep命令。grep jdk是正则匹配带jdk的结果。3. 卸载jdk1) -e --nodeps jdk1.8.0_25-1.8.0_25-fcs.x86_642)使⽤ rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包3)erase | don't verify package dependencies4. Linux服务器之间复制⽂件或⽬录1)

Secure copy, similar in function to rcp, copies files between two different networked machines, but does so usingauthentication, and with a security level similar to ssh.1.

cp /home/stacy/images/image*.jpg /home/stacy/archive2.

scp /home/stacy/images/image*.jpg stacy@:/home/stacy/archive3.

scp stacy@:/home/stacy/archive/image*.jpg /home/stacy/downloads4.

scp user@:/home/user/dir1/ user@:/home/user/dir25.

scp someuser@:/somedir/ someuser@:/anotherdir2)move or rename filesmv /old /new5.安装jdk1)rpm -i 2)执⾏命令前需进⼊到⽂件所在⽬录Install/Upgrade/Erase options:-i, --install install package(s)6.安装rocketmq1)tar xzvf []x, --extract, --getExtract files from an archive.-z, --gzip, --gunzip

This option tells tar to read or write archives through gzip, allowing tar to directly operate on several kinds of compressedarchives transparently. This option should be used, for example, when operating on files with the extension ..-v, --verbose

Operate verbosely.-f, --file=ARCHIVE

Use archive file (or device) ARCHIVE.7.创建⽂件夹1)mkdir myfile8.删除⽂件夹1)rm –rf [dir]2)参数解释-f或–force  强制删除⽂件或⽬录。

-r或-R或–recursive  递归处理,将指定⽬录下的所有⽂件及⼦⽬录⼀并处理。-v或–verbose  显⽰指令执⾏过程。

3)rm -rf /[dir]/*9.配置环境变量1)vi + /etc/profile2)向⽂件⾥⾯追加以下内容JAVA_HOME=/usr/java/jdk1.7.0_71JRE_HOME=/usr/java/jdk1.7.0_71/jrePATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/binCLASSPATH=.:$JAVA_HOME/lib/:$JAVA_HOME/lib/:$JRE_HOME/libROCKETMQ_HOME=/app/alibaba-rocketmq

export JAVA_HOME JRE_HOME PATH CLASSPATH ROCKETMQ_HOME3)使修改⽴即⽣效source /etc/profile4)查看环境变量值echo $PATH5)添加权限写权限chmod 644 /etc/profilechmod -R 777 apache-tomcat-server6)备注vi filename 打开或新建⽂件,并将光标置于第⼀⾏⾸vi +n filename 打开⽂件,并将光标置于第n⾏⾸vi + filename 打开⽂件,并将光标置于最后⼀⾏⾸vi 命令打开⽂件,i 进⼊编辑模式 esc进⼊命令模式:q! 强制退出不保存:wq! 强制保存并退出。profile中export的作⽤:export命令将使系统在创建每⼀个新的shell时,定义这个变量的⼀个拷贝。执⾏脚本时是在⼀个⼦shell环境运⾏的,脚本执⾏完后该⼦shell⾃动退出;⼀个shell中的系统环境变量会被复制到⼦shell中(⽤export定义的变量);⼀个shell中的系统环境变量只对该shell或者它的⼦shell有效,该shell结束时变量消(并不能返回到⽗shell中)。不⽤export定义的变量只对该shell有效,对⼦shell也是⽆效的。10.查看tomcat⽇志1)tail -f 2)追踪⽇志,动态显⽰3)tail -f /app/apache-tomcat-server/apache-tomcat-8.0.15-8001/logs/l + c

11.查看tomcat进程1)ps -ef |grep tomcat2)grep 会把列头过滤掉,请注意。

UIDPIDPPIDCSTIMETTY开始此进程的⽤户ID进程ID⽗进程IDCPU占⽤率开始时间TTYTIME次进程运⾏的总时间命令名CMD12.查看⽂件夹⼤⼩和⽂件⼤⼩和磁盘剩余空间1)du -h --max-depth=1 ⼀级⽬录⼤⼩2) du -h --max-depth=1 *2)du -h ⽬录⼤⼩3)ll -h4)df -hl5) df -hl /root 查看/root ⽬录已使⽤和可⽤情况必要参数:-a 全部⽂件系统列表-h ⽅便阅读⽅式显⽰-H 等于“-h”,但是计算式,1K=1000,⽽不是1K=1024-i 显⽰inode信息-k 区块为1024字节-l 只显⽰本地⽂件系统-m 区块为1048576字节--no-sync 忽略 sync 命令-P 输出格式为POSIX--sync 在取得磁盘信息前,先执⾏sync命令-T ⽂件系统类型13.杀死进程1)kill -9 [PID]定时任务1)crontab -e 编辑任务2)service crond status 查看服务状态3)4)⽰例# every hour delete rocketmq logs* */1 * * * find /root/logs/rocketmqlogs/otherdays/* -exec rm -rf {} ;三.Broker集群部署1.系统优化1)sh $ROCKETMQ_HOME/bin/2)在sh命令前加nohup ,执⾏命令的结果会输出拼接到 ⽂件,more 查看⽂件内容。否则信息输出到控制台。在命令结尾加$ 是把作业放在后台执⾏。2.启动name service1)sh mqnamesrv &2)需要进⼊到bin⽬录,或者使⽤全路径3)当The Name Server boot success.之后,再次启动name service 会报地址已经被占⽤。 集群部署[多Master多Slave模式,异步复制]1)进⼊$ROCKETMQ_HOME/conf/2m-2s-async/ 修改properties配置⽂件2)配置⽂件ties3)启动broker### 在机器 A,启动第⼀个 Mastersh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/ties &

### 在机器 B,启动第⼀个 Slavesh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/ties &

### 在机器 C,启动第⼆个 Mastersh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/ties &

### 在机器 D,启动第⼆个 Slavesh mqbroker -c $ROCKETMQ_HOME/conf/2m-2s-sync/ties &4)《开发指导》⽂档中,详细记录了各个参数,都可以设到properties⽂件⾥。5)启动时可以 -n 指定多个namesrv。例如 sh mqbroker –n "10.128.2.22:9876;10.128.2.23:9876" -c$ROCKETMQ_HOME/conf/2m-2s-async/ties &6)注意路径sync 和async 不要马虎。推荐namesrv也配置到properties⽂件中。7)如果⼀台机器想启动多个broker ,需要修改监听端⼝(默认为10911),否则报地址已经被占⽤。8)如果Name Server 未启动或者不能连接到服务器,指定该name service 的producer发消息,会报:No route info of this topic。9)启动第⼀个broker 不需要指定listenPort ,默认占⽤10911和10912端⼝,所以⼀台机器启动两个broker 时,第⼆个broker端⼝应该设置10913,10914 。listenPort=10913haListenPort=1091410)特别注意!!haListenPort 在《指导》中没有说明。11)查看系统端⼝占⽤情况netstat -apn|grep 109112)详细参数设置需要⾃⾏查阅《RocketMQ Developer 》⽂档。13)RocketMQ 控制台:进⼊ RocketMQ/binsh mqadmin查看哪些命令sh mqadmin help [命令名]显⽰帮助信息例如执⾏查看23 server的集群消息sh mqadmin clusterList -n 10.128.2.23:987614)删除topicsh mqadmin clusterList -n 172.16.50.238:9876sh mqadmin deleteTopic -c DefaultCluster -n 172.16.50.238:9876 -t USERLOGIN4.关闭sh mqshutdown namesrvsh mqshutdown broker5.退出1)exit2)使⽤xshell启动服务后,退出时需要⽤命令exit 。 如果直接点关闭程序按钮关闭终端,会导致刚才的进程被关闭。特别注意!!。四.验证broker机制1.⽅案 master-slave1)单机启动a、a-s2)DefaultPushConsumer 设置为单线程3)consumer 打断点4)producer 发送10条消息5)consumer消费⼀条消息后kill 掉master6)结果:producer不能继续发送消息,no route info; consumer 可以继续消费剩余的9条信息。五.项⽬运⾏遭遇的问题1.磁盘空间不够1)erException: CODE: 14 DESC: service not available now, maybe disk full, CL:

0.87 CQ: 0.87 INDEX: 0.87, maybe your broker machine memory too small.2)位于$HOME/logs/rocketmqlogs/下的⽇志⽂件,占⽤太多空间。3)解决问题:修改源码中⽇志⽂件位置,参考《RocketMQ⾃定义⽂件路径.docx》服务器挂掉了1)20-Apr-2015 00:39:07.158 SEVERE [http-nio-8002-Acceptor-0] point$ket accept ption: Too many open files at 0(Native Method) at (:241) at point$(:688) at (:745)2)需要修改tomcat启动参数3.挂掉了1)24-Apr-2015 10:10:48.529 SEVERE [http-nio-8002-ClientPoller-0] point$emoryError: unable to create new native thread at 0(Native Method) at (:714) at ker(:950) at e(:1368) at e(:161) at e(:141) at sSocket(:627) at point$sKey(:1129) at point$(:1087) at (:745)2) producer 发消息改为单例模式,由spring管理。4. DefaultMQProducer 构造失败,构造参数为空1)ntException: The producer service state not OK, START_FAILED reStateOK(:445) at faultImpl(:517) at (:1059) at (:122) at (:53)2) Spring单例模式的DefaultMQProducer在linux服务器时不好⽤,发消息失败The producer service state not OK原因:参数未取到,出现new DefaultMQProducer(null) 抛异常导致start未调⽤解决办法:优化逻辑,保证成功启动

mq 2015-04-25 23:00:10 WARN WriteSocketService - findMapedFileByOffset offset not matched, request Offset: 2687768,index: -2, mapedFileSize: 1073741824, mapedFiles count: 2, StackTrace: ckTrace(:1589) tStackTrace(:63) pedFileByOffset(:467) a(:156) a(:150) mitLogData(:818) ection$(:334) (:745)6.2015-04-25 22:57:57 WARN DispatchMessageService - [BUG]logic queue order maybe wrong, expectLogicOffset:13047200 currentLogicOffset: 13048100 Topic: MMSI_TOPIC QID: 0 Diff: -9007.磁盘空间不⾜,commitlog1)警告信息 2015-04-25 22:57:54 INFO StoreScheduledThread1 - physic disk maybe full soon, so reclaim space,0.843414453-04-25 22:57:54 INFO StoreScheduledThread1 - begin to delete before 48 hours file. timeup: false spacefull: truemanualDeleteFileSeveralTimes: 0 cleanAtOnce: false2015-04-25 22:57:54 WARN StoreScheduledThread1 - disk space will be full soon, but delete file failed.2015-04-25 22:57:55 INFO StoreScheduledThread1 - logics disk maybe full soon, so reclaim space,0.843462015-04-25 22:57:55 INFO StoreScheduledThread1 - begin to delete before 48 hours file. timeup: false spacefull: truemanualDeleteFileSeveralTimes: 0 cleanAtOnce: false2015-04-25 22:57:55 WARN StoreScheduledThread1 - disk space will be full soon, but delete file failed.2)/** * 清理逻辑⽂件服务 */class CleanConsumeQueueService/** * 清理物理⽂件服务 */class CleanCommitLogService// 磁盘空间警戒⽔位,超过,则停⽌接收新消息(出于保护⾃⾝⽬的) private final double DiskSpaceWarningLevelRatio = ouble(perty( "aceWarningLevelRatio", "0.90"));3) df -hl /appdf -hl /root4) du -hl /appdu -hl /root

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688383265a129793.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信