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 命令,如下圖

 

 

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