溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

springboot項(xiàng)目編譯、運(yùn)行優(yōu)化怎么操作

發(fā)布時(shí)間:2021-06-22 16:33:09 來源:億速云 閱讀:273 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“springboot項(xiàng)目編譯、運(yùn)行優(yōu)化怎么操作”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“springboot項(xiàng)目編譯、運(yùn)行優(yōu)化怎么操作”吧!

   本篇博客主要記錄博主在使用springboot時(shí),相關(guān)的操作:

(1)編譯打包、執(zhí)行springboot項(xiàng)目

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

        服務(wù)器:mvn clean package -U -Dmaven.test.skip=true -Ptest

(2)運(yùn)行springboot項(xiàng)目

        java -jar xxx.jar

       //pinpoint-agent監(jiān)控的方式啟動(dòng)springboot項(xiàng)目
       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開啟遠(yuǎn)程debug與遠(yuǎn)程監(jiān)控
         a.開啟遠(yuǎn)程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遠(yuǎn)程監(jiān)控

           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>&

         //同時(shí)也可以使用

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

(4)生產(chǎn)調(diào)優(yōu)(8G內(nèi)存,64位linux,JDK1.8)--壓測調(diào)優(yōu)結(jié)果
        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 &
     

        最后關(guān)于JVM說明:

        -XX:PermSize=1024M 永久代大小
        -XX:MaxPermSize=1024M -Xms4096M -Xmx4096M     MaxPermSize為最大永久代大小,
        -Xmn1024M -XX:SurvivorRatio=8 
        -XX:+DisableExplicitGC 關(guān)閉程序主動(dòng)調(diào)用gc
        -XX:+UseConcMarkSweepGC 
        -XX:+UseParNewGC 
        -XX:+UseCMSCompactAtFullCollection 全量垃圾回收后,是否進(jìn)行內(nèi)存整理
        -XX:CMSFullGCsBeforeCompaction=10 多少次全量垃圾回收與后進(jìn)行一次內(nèi)存整理
        -XX:+CMSClassUnloadingEnabled 是否允許(永久代)清理
        -XX:+CMSParallelRemarkEnabled 降低標(biāo)記停頓
        -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCMSInitiatingOccupancyOnly指定HotSpot VM總是使用-XX:CMSInitiatingOccupancyFraction的值作為old的空間使用率限制來啟動(dòng)CMS垃圾回收。如果沒有使用-XX:+UseCMSInitiatingOccupancyOnly,那么HotSpot VM只是利用這個(gè)值來啟動(dòng)第一次CMS垃圾回收,后面都是使用HotSpot VM自動(dòng)計(jì)算出來的值。
        -XX:CMSInitiatingOccupancyFraction=70    這個(gè)值指定了CMS垃圾回收時(shí)old代的空間占用率該是什么值。舉例說明,如果你希望old代占用率是65%的時(shí)候,啟動(dòng)CMS垃圾回收,你可以設(shè)置-XX:CMSInitiatingOccupancyFraction=65。
        -XX:TargetSurvivorRatio=90 設(shè)定survivor區(qū)的目標(biāo)使用率。默認(rèn)50,即survivor區(qū)對象目標(biāo)使用率為50%。
        -XX:MaxTenuringThreshold=20 晉升年齡最大閾值,默認(rèn)15。在新生代中對象存活次數(shù)(經(jīng)過YGC的次數(shù))后仍然存活,就會(huì)晉升到老年代。每經(jīng)過一次YGC,年齡加1,當(dāng)survivor區(qū)的對象年齡達(dá)到TenuringThreshold時(shí),表示該對象是長存活對象,就會(huì)直接晉升到老年代。

(5)調(diào)優(yōu)中監(jiān)控命令(此處未完待續(xù))

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

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

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

         收集器設(shè)置
         -XX:+UseSerialGC:設(shè)置串行收集器
         -XX:+UseParallelGC:設(shè)置并行收集器
         -XX:+UseParalledlOldGC:設(shè)置并行年老代收集器
         -XX:+UseConcMarkSweepGC:設(shè)置并發(fā)收集器

         垃圾回收統(tǒng)計(jì)信息
         -XX:+PrintGC
         -XX:+PrintGCDetails
         -XX:+PrintGCTimeStamps
         -Xloggc:filename

         并行收集器設(shè)置
         -XX:ParallelGCThreads=n:設(shè)置并行收集器收集時(shí)使用的CPU數(shù)。并行收集線程數(shù)。
         -XX:MaxGCPauseMillis=n:設(shè)置并行收集最大暫停時(shí)間
         -XX:GCTimeRatio=n:設(shè)置垃圾回收時(shí)間占程序運(yùn)行時(shí)間的百分比。公式為1/(1+n)

         并發(fā)收集器設(shè)置
         -XX:+CMSIncrementalMode:設(shè)置為增量模式。適用于單CPU情況。
         -XX:ParallelGCThreads=n:設(shè)置并發(fā)收集器年輕代收集方式為并行收集時(shí),使用的CPU數(shù)。并行收集線程數(shù)

感謝各位的閱讀,以上就是“springboot項(xiàng)目編譯、運(yùn)行優(yōu)化怎么操作”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對springboot項(xiàng)目編譯、運(yùn)行優(yōu)化怎么操作這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI