1. 程式人生 > >dubbo-monitor啟動異常之Native memory allocation (mmap) failed to map 1879048192 bytes for committing rese

dubbo-monitor啟動異常之Native memory allocation (mmap) failed to map 1879048192 bytes for committing rese

1.異常描述

[root@izwz91h49n3mj8r232gqwez bin]# pwd
/opt/dubbo/dubbo-monitor-simple-2.5.3/bin
[root@izwz91h49n3mj8r232gqwez bin]# ll
total 24
-rwxr-xr-x 1 root root 2144 Oct 23  2012 dump.sh
-rwxr-xr-x 1 root root   49 Oct 23  2012 restart.sh
-rwxr-xr-x 1 root root  413 Oct 23  2012 server.sh
-rwxr-xr-x 1
root root 815 Oct 23 2012 start.bat -rwxr-xr-x 1 root root 2968 Dec 4 07:33 start.sh -rwxr-xr-x 1 root root 836 Oct 23 2012 stop.sh [root@izwz91h49n3mj8r232gqwez bin]#

啟動上面的start.sh命令之後,一直啟動不起來

[root@izwz91h49n3mj8r232gqwez bin]# sh start.sh 
Starting the simple-monitor ....................
............................................................................................................................................................................................................................................................................................................
........................................................................................................................................................................................................................................................

發現 報錯資訊

[root@izwz91h49n3mj8r232gqwez dubbo-monitor-simple-2.5.3]# ll
total 76
drwxr-xr-x 2 root root  4096 Dec  4 07:33 bin
drwxr-xr-x 2 root root  4096 Dec  4 06:53 conf
-rw-r--r-- 1 root root 16810 Dec  4 07:19 hs_err_pid2950.log
-rw-r--r-- 1 root root 16816 Dec  4 06:50 hs_err_pid29561.log
-rw-r--r-- 1 root root 16865 Dec  4 06:54 hs_err_pid31550.log
drwxr-xr-x 2 root root  4096 Dec  4 06:42 lib
drwxr-xr-x 2 root root  4096 Dec  4 07:33 logs
[root@izwz91h49n3mj8r232gqwez dubbo-monitor-simple-2.5.3]# 

hs_err_pid31550.log描述錯誤資訊如下

[root@izwz91h49n3mj8r232gqwez dubbo-monitor-simple-2.5.3]# tail -f hs_err_pid31550.log 



Memory: 4k page, physical 1883724k(89516k free), swap 0k(0k free)

vm_info: Java HotSpot(TM) 64-Bit Server VM (25.172-b11) for linux-amd64 JRE (1.8.0_172-b11), built on Mar 28 2018 21:44:09 by "java_re" with gcc 4.3.0 20080428 (Red Hat 4.3.0-8)

time: Tue Dec  4 06:54:00 2018
elapsed time: 0 seconds (0d 0h 0m 0s)

2.異常解決

上面錯誤資訊提示為
沒有足夠的記憶體啟動 監控
這個時候檢視你解壓出來的啟動檔案 vi start.sh檔案就是啟動檔案

[root@izwz91h49n3mj8r232gqwez bin]# pwd
/opt/dubbo/dubbo-monitor-simple-2.5.3/bin
[root@izwz91h49n3mj8r232gqwez bin]# ll
total 24
-rwxr-xr-x 1 root root 2144 Oct 23  2012 dump.sh
-rwxr-xr-x 1 root root   49 Oct 23  2012 restart.sh
-rwxr-xr-x 1 root root  413 Oct 23  2012 server.sh
-rwxr-xr-x 1 root root  815 Oct 23  2012 start.bat
-rwxr-xr-x 1 root root 2968 Dec  4 07:33 start.sh
-rwxr-xr-x 1 root root  836 Oct 23  2012 stop.sh
[root@izwz91h49n3mj8r232gqwez bin]# vim start.sh 

 45 
 46 JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
 47 JAVA_DEBUG_OPTS=""
 48 if [ "$1" = "debug" ]; then
 49     JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
 50 fi
 51 JAVA_JMX_OPTS=""
 52 if [ "$1" = "jmx" ]; then
 53     JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
 54 fi
 55 JAVA_MEM_OPTS=""
 56 BITS=`java -version 2>&1 | grep -i 64-bit`
 57 if [ -n "$BITS" ]; then
 58     JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCol    lection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
 59 else
 60     JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
 61 fi
 62 
 63 echo -e "Starting the $SERVER_NAME ...\c"
 64 nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &
 65 
 66 COUNT=0
 67 while [ $COUNT -lt 1 ]; do
 68     echo -e ".\c"
 69     sleep 1
 70     if [ -n "$SERVER_PORT" ]; then

大概58行,start.sh指令碼預設的配置

-Xmx2g -Xms2g -Xmn256m

由於我的電腦只有1g的記憶體,所以
需要改為

-Xmx512m -Xms512m -Xmn256m

備註:

-Xms128m JVM初始分配的堆記憶體
-Xmx512m JVM最大允許分配的堆記憶體,按需分配
-XX:PermSize=64M JVM初始分配的非堆記憶體
-XX:MaxPermSize=128M JVM最大允許分配的非堆記憶體,按需分配