CentOS7上安装RocketMQ

一 RocketMQ 下载

可以去官网下载RocketMQ源码版

官网只有.zip版本,没有.tgz或.tar.gz版本。

RocketMQ官网地址 :
http://rocketmq.apache.org/

1. 下载

wget https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip

2. 解压缩到指定目录 /home 目录下

unzip -o rocketmq-all-4.7.0-bin-release.zip -d /home/

二 RocketMQ安装

1. 启动Name Server服务

cd /home/rocketmq-all-4.7.0-bin-release/
nohup sh bin/mqnamesrv &

启动后会自动在当前用户根目录下创建logs文件夹并生成两个日志文件

[root@fastdfs rocketmqlogs]# pwd
/root/logs/rocketmqlogs
[root@fastdfs rocketmqlogs]# ls
namesrv_default.log  namesrv.log

查看日志

[root@fastdfs home]# tail -f ~/logs/rocketmqlogs/namesrv.log 
...
2020-04-08 17:47:11 INFO main - The Name Server boot success. serializeType=JSON
...

查看进程

telnet一下

netstat 一下

2.启动 Broker

cd /home/rocketmq-all-4.7.0-bin-release/
nohup bash bin/mqbroker -n 192.168.158.147:9876 &

启动 Broker后,会在 ~/下生成store目录

 

如果服务器内存太小,启动Broker会失败

可以通过查看 /home/rocketmq-all-4.7.0-bin-release/ 下的 nohup.out 日志文件

[root@fastdfs rocketmq-all-4.7.0-bin-release]# tail -f nohup.out 
Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/rocketmq-all-4.7.0-bin-release/hs_err_pid94260.log
 

 

通过nohup.out 日志文件我们找到线索,是内存不足,导致启动Broker 失败,具体原因 我们可以去 nohup文件中提到的/home/rocketmq-all-4.7.0-bin-release/hs_err_pid94260.log日志文件中查看

#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
# Possible reasons:
#   The system is out of physical RAM or swap space
#   In 32 bit mode, the process size limit was hit
# Possible solutions:
#   Reduce memory load on the system
#   Increase physical memory or swap space
#   Check if swap backing store is full
#   Use 64 bit Java on a 64 bit OS
#   Decrease Java heap size (-Xmx/-Xms)
#   Decrease number of Java threads
#   Decrease Java thread stack sizes (-Xss)
#   Set larger code cache with -XX:ReservedCodeCacheSize=
# This output file may be truncated or incomplete.
#
#  Out of Memory Error (os_linux.cpp:2640), pid=94260, tid=0x00007f73dc1d4700
#
# JRE version:  (8.0_161-b12) (build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode linux-amd64 compressed oops)
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#

---------------  T H R E A D  ---------------
。。。。。。

VM Arguments:
jvm_args: -Xms8g -Xmx8g -Xmn4g -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRef
LRUPolicyMSPerMB=0 -verbose:gc -Xloggc:/dev/shm/rmq_broker_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStop
pedTime -XX:+PrintAdaptiveSizePolicy -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m -XX:-OmitStackTraceInFastThrow -
XX:+AlwaysPreTouch -XX:MaxDirectMemorySize=15g -XX:-UseLargePages -XX:-UseBiasedLocking -Djava.ext.dirs=/usr/local/java/jdk1.8.0_161/jre/lib/e
xt:/home/rocketmq-all-4.7.0-bin-release/bin/../lib 
java_command: org.apache.rocketmq.broker.BrokerStartup -n 192.168.158.147:9876
java_class_path (initial): .:/home/rocketmq-all-4.7.0-bin-release/bin/../conf:.:/usr/local/java/jdk1.8.0_161/lib/dt.jar:/usr/local/java/jdk1.8
.0_161/lib/tools.jar:/usr/local/java/jdk1.8.0_161/jre/lib
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=/usr/local/java/jdk1.8.0_161
JRE_HOME=/usr/local/java/jdk1.8.0_161/jre
CLASSPATH=.:/home/rocketmq-all-4.7.0-bin-release/bin/../conf:.:/usr/local/java/jdk1.8.0_161/lib/dt.jar:/usr/local/java/jdk1.8.0_161/lib/tools.
jar:/usr/local/java/jdk1.8.0_161/jre/lib
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/java/jdk1.8.0_161/bin:/root/bin
SHELL=/bin/bash
。。。。。。
---------------  S Y S T E M  ---------------

OS:CentOS Linux release 7.5.1804 (Core) 

uname:Linux 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64
libc:glibc 2.17 NPTL 2.17 
rlimit: STACK 8192k, CORE 0k, NPROC 3802, NOFILE 4096, AS infinity
load average:0.01 0.02 0.05

/proc/meminfo:
MemTotal:         997956 kB
MemFree:           61456 kB
MemAvailable:     398092 kB
。。。。。。

三 启动参数jvm调优解读
1. name server jvm

cat bin/mqnamesrv
最后一行代码为

sh ${ROCKETMQ_HOME}/bin/runserver.sh org.apache.rocketmq.namesrv.NamesrvStartup $@

说明 bin/mqnamesrv 调用了 bin/runserver.sh

cat bin/runserver.sh
最后几行代码为

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

可知是在此文件 runserver.sh 中配置的 name server 的jvm参数

2. broker jvm

cat bin/mqbroker
最后一行代码为

sh ${ROCKETMQ_HOME}/bin/runbroker.sh org.apache.rocketmq.broker.BrokerStartup $@

说明 bin/mqbroker 调用了 bin/runbroker.sh

cat bin/runbroker.sh
最后几行代码为

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

可知,是在此文件 runbroker.sh 中配置的 broker 的jvm参数

 

四 关闭服务

关闭 Broker

[root@fastdfs ~]# cd /home/rocketmq-all-4.7.0-bin-release/
[root@fastdfs rocketmq-all-4.7.0-bin-release]# sh bin/mqshutdown broker
The mqbroker(89975) is running...
Send shutdown request to mqbroker(89975) OK

关闭 Name Server

[root@fastdfs ~]# cd /home/rocketmq-all-4.7.0-bin-release/
[root@fastdfs rocketmq-all-4.7.0-bin-release]# sh bin/mqshutdown namesrv
The mqnamesrv(89974) is running...
Send shutdown request to mqnamesrv(89974) OK

 

查看 mqshutdown 脚本内容,可知,关闭服务其实也是调用的 kill $pid 命令,如下图

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章