您好,登錄后才能下訂單哦!
這篇文章主要講解了“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)注!
免責(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)容。