springboot項目編譯、運行優化等相關操做

   本篇博客主要記錄博主在使用springboot時,相關的操做:java

(1)編譯打包、執行springboot項目linux

           本地:mvn clean package -U --settings D:\devsoft\apache-maven-3.5.3\conf\huxs1settings.xml -Dmaven.test.skip=true -Pdevspring

        服務器:mvn clean package -U -Dmaven.test.skip=true -Ptestapache

(2)運行springboot項目bootstrap

        java -jar xxx.jarspringboot

       //pinpoint-agent監控的方式啓動springboot項目
       nohup java -Xms6144m -Xmx6144m -XX:PermSize=1024m -XX:MaxPermSize=1024m -javaagent:/home/xpp/apm/pinpoint-agent/pinpoint-bootstrap.jar -Dpinpoint.agentId=PP_123.xx.xx.115 -Dpinpoint.applicationName=crs_bb_bb-xxx-data -jar xxx.jar 服務器

(3)SpringBoot開啓遠程debug與遠程監控
         a.開啓遠程debug併發

            nohup java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=3286,suspend=n -jar wtp-service-pay-0.0.1-SNAPSHOT.jar --spring.profiles.active=test > wtp-service-pay.log 2>&1 &
         b.開啓jvisualVM遠程監控app

           nohup java \
          -Djava.rmi.server.hostname=12x.xx.xx.112 \
          -Dcom.sun.management.jmxremote \
          -Dcom.sun.management.jmxremote.port=9999 \
          -Dcom.sun.management.jmxremote.authenticate=false \
          -Dcom.sun.management.jmxremote.ssl=false \
          -Dcom.sun.management.jmxremote.rmi.port=9999 \
          -jar wtp-service-pay-0.0.1-SNAPSHOT.jar --spring.profiles.active=test  > wtp-service-pay.log 2>&socket

         //同時也能夠使用

          <!-- JMX monitor -->
          <dependency>
             <groupId>org.jolokia</groupId>
            <artifactId>jolokia-core</artifactId>
          </dependency> 

(4)生產調優(8G內存,64位linux,JDK1.8)--壓測調優結果
        nohup java  \
              -Xms6144m -Xmx6144m -Xmn2048M -XX:OldSize=4096M -Xss1024k \
              -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m \
              -XX:+UseConcMarkSweepGC \
              -XX:+UseParNewGC \
              -XX:+UseCMSCompactAtFullCollection \
              -XX:CMSFullGCsBeforeCompaction=10 \
              -XX:+CMSClassUnloadingEnabled \
              -XX:+CMSParallelRemarkEnabled \
              -XX:+UseCMSInitiatingOccupancyOnly \
              -XX:CMSInitiatingOccupancyFraction=70 \
              -Djava.rmi.server.hostname=12x.xx.xx.112 \
              -Dcom.sun.management.jmxremote \
              -Dcom.sun.management.jmxremote.port=9999 \
              -Dcom.sun.management.jmxremote.authenticate=false \
              -Dcom.sun.management.jmxremote.ssl=false \
              -Dcom.sun.management.jmxremote.rmi.port=9999 \
              -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=121.xx.xx.112 :8000,suspend=n -jar $JAR_NAME --spring.profiles.active=test              >/home/app/logs/xxxxsearch-catli.out 2>&1 &
     

        最後關於JVM說明:

        -XX:PermSize=1024M 永久代大小
        -XX:MaxPermSize=1024M -Xms4096M -Xmx4096M     MaxPermSize爲最大永久代大小,
        -Xmn1024M -XX:SurvivorRatio=8 
        -XX:+DisableExplicitGC 關閉程序主動調用gc
        -XX:+UseConcMarkSweepGC 
        -XX:+UseParNewGC 
        -XX:+UseCMSCompactAtFullCollection 全量垃圾回收後,是否進行內存整理
        -XX:CMSFullGCsBeforeCompaction=10 多少次全量垃圾回收與後進行一次內存整理
        -XX:+CMSClassUnloadingEnabled 是否容許(永久代)清理
        -XX:+CMSParallelRemarkEnabled 下降標記停頓
        -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCMSInitiatingOccupancyOnly指定HotSpot VM老是使用-XX:CMSInitiatingOccupancyFraction的值做爲old的空間使用率限制來啓動CMS垃圾回收。若是沒有使用-XX:+UseCMSInitiatingOccupancyOnly,那麼HotSpot VM只是利用這個值來啓動第一次CMS垃圾回收,後面都是使用HotSpot VM自動計算出來的值。
        -XX:CMSInitiatingOccupancyFraction=70    這個值指定了CMS垃圾回收時old代的空間佔用率該是什麼值。舉例說明,若是你但願old代佔用率是65%的時候,啓動CMS垃圾回收,你能夠設置-XX:CMSInitiatingOccupancyFraction=65。
        -XX:TargetSurvivorRatio=90 設定survivor區的目標使用率。默認50,即survivor區對象目標使用率爲50%。
        -XX:MaxTenuringThreshold=20 晉升年齡最大閾值,默認15。在新生代中對象存活次數(通過YGC的次數)後仍然存活,就會晉升到老年代。每通過一次YGC,年齡加1,當survivor區的對象年齡達到TenuringThreshold時,表示該對象是長存活對象,就會直接晉升到老年代。

(5)調優中監控命令(此處未完待續)

         a.命令行:jps、 jstat、jinfo、jmap、jhat、jstack

         b.jdk工具(bin目錄):jvisualvm.exe、jconsole.exe 

(6)常見配置彙總
         堆設置
         -Xms:初始堆大小
         -Xmx:最大堆大小
         -XX:NewSize=n:設置年輕代大小
         -XX:NewRatio=n:設置年輕代和年老代的比值。如:爲3,表示年輕代與年老代比值爲1:3,年輕代佔整個年輕代年老代和的1/4
         -XX:SurvivorRatio=n:年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區佔整個年輕代的1/5
         -XX:MaxPermSize=n:設置持久代大小

         收集器設置
         -XX:+UseSerialGC:設置串行收集器
         -XX:+UseParallelGC:設置並行收集器
         -XX:+UseParalledlOldGC:設置並行年老代收集器
         -XX:+UseConcMarkSweepGC:設置併發收集器

         垃圾回收統計信息
         -XX:+PrintGC
         -XX:+PrintGCDetails
         -XX:+PrintGCTimeStamps
         -Xloggc:filename

         並行收集器設置
         -XX:ParallelGCThreads=n:設置並行收集器收集時使用的CPU數。並行收集線程數。
         -XX:MaxGCPauseMillis=n:設置並行收集最大暫停時間
         -XX:GCTimeRatio=n:設置垃圾回收時間佔程序運行時間的百分比。公式爲1/(1+n)

         併發收集器設置          -XX:+CMSIncrementalMode:設置爲增量模式。適用於單CPU狀況。          -XX:ParallelGCThreads=n:設置併發收集器年輕代收集方式爲並行收集時,使用的CPU數。並行收集線程數

相關文章
相關標籤/搜索