優(yōu)化你的springboot--工作面試必備

介紹

在SpringBoot的Web項目中,默認(rèn)采用的是內(nèi)置Tomcat,當(dāng)然也可以配置支持內(nèi)置的jetty,內(nèi)置有什么好處呢?

方便微服務(wù)部署。

方便項目啟動,不需要下載Tomcat或者Jetty

針對目前的容器優(yōu)化,目前來說沒有太多地方,需要考慮如下幾個點

線程數(shù)

超時時間

jvm優(yōu)化

針對上述的優(yōu)化點來說,首先線程數(shù)是一個重點,初始線程數(shù)和最大線程數(shù),初始線程數(shù)保障啟動的時候,如果有大量用戶訪問,能夠很穩(wěn)定的接受請求。

而最大線程數(shù)量用來保證系統(tǒng)的穩(wěn)定性,而超時時間用來保障連接數(shù)不容易被壓垮,如果大批量的請求過來,延遲比較高,不容易把線程打滿。這種情況在生產(chǎn)中是比較常見的 ,一旦網(wǎng)絡(luò)不穩(wěn)定,寧愿丟包也不愿意把機器壓垮。

jvm優(yōu)化一般來說沒有太多場景,無非就是加大初始的堆,和最大限制堆,當(dāng)然也不是無限增大,根據(jù)的情況進快速開始

在spring boot配置文件中application.yml,添加以下配置

server:

tomcat:

min-spare-threads:20

max-threads:100

connection-timeout:5000

這塊對tomcat進行了一個優(yōu)化配置,最大線程數(shù)是100,初始化線程是20,超時時間是5000ms

Jvm優(yōu)化

這塊主要不是談如何優(yōu)化,jvm優(yōu)化是一個需要場景化的,沒有什么太多特定參數(shù),一般來說在server端運行都會指定如下參數(shù)

初始內(nèi)存和最大內(nèi)存基本會設(shè)置成一樣的,具體大小根據(jù)場景設(shè)置,-server是一個必須要用的參數(shù),至于收集器這些使用默認(rèn)的就可以了,除非有特定需求。

1.使用-server模式

設(shè)置JVM使用server模式。64位JDK默認(rèn)啟動該模式

java-server-jarspringboot-1.0.jar

2.指定堆參數(shù)

這個根據(jù)服務(wù)器的內(nèi)存大小,來設(shè)置堆參數(shù)。

-Xms :設(shè)置Java堆棧的初始化大小

-Xmx :設(shè)置最大的java堆大小

java-server-Xms512m-Xmx768m-jarspringboot-1.0.jar

設(shè)置初始化堆內(nèi)存為512MB,最大為768MB。

3.遠(yuǎn)程Debug

在服務(wù)器上將啟動參數(shù)修改為:

java-Djavax.net.debug=

ssl?-Xdebug-Xnoagent?-Djava.compiler=

NONE?-Xrunjdwp:transport=

dt_socket,server=y,suspend=

n,address=8888-jar?springboot-1.0.jar

這個時候服務(wù)端遠(yuǎn)程Debug模式開啟,端口號為8888。

在IDEA中,點擊Edit Configuration按鈕。

出現(xiàn)彈窗,點擊+按鈕,找到Remote選項。

在【1】中填入Remote項目名稱,在【2】中填I(lǐng)P地址和端口號,在【3】選擇遠(yuǎn)程調(diào)試的項目module,配置完成后點擊OK即可

如果碰到連接超時的情況,很有可能服務(wù)器的防火墻的問題,舉例CentOs7,關(guān)閉防火墻

systemctlstopfirewalld.service#停止firewall

systemctldisablefirewalld.service#禁止firewall開機啟動

點擊debug按鈕,IDEA控制臺打印信息:

說明遠(yuǎn)程調(diào)試成功。

JVM工具遠(yuǎn)程連接

jconsole與Jvisualvm遠(yuǎn)程連接

通常我們的web服務(wù)都輸部署在服務(wù)器上的,在window使用jconsole是很方便的,相對于Linux就有一些麻煩了,需要進行一些設(shè)置。

1.查看hostname,首先使用

hostname-i

查看,服務(wù)器的hostname為127.0.0.1,這個是不對的,需要進行修改

2.修改hostname

修改/etc/hosts文件,將其第一行的“127.0.0.1 localhost.localdomain localhost”,修改為:“192.168.44.128 localhost.localdomain localhost”.“192.168.44.128”為實際的服務(wù)器的IP地

3.重啟Linux,在服務(wù)器上輸入hostname -i,查看實際設(shè)置的IP地址是否為你設(shè)置的

4.啟動服務(wù),參數(shù)為:

java-jar?-Djava.rmi.server.hostname=192.168.44.128-

Dcom.sun.management.jmxremote?-Dcom.sun.management.jmxremote.port=911-

Dcom.sun.management.jmxremote.ssl=false-

Dcom.sun.management.jmxremote.authenticate=falsejantent-1.0-SNAPSHOT.jar

ip為192.168.44.128,端口為911 。

5.打開Jconsole,進行遠(yuǎn)程連接,輸入IP和端口即可

點擊連接,經(jīng)過稍稍等待之后,即可完成連接,如下圖所示:

同理,JvisualVm的遠(yuǎn)程連接是同樣的,啟動參數(shù)也是一樣。

然后在本機JvisualVm輸入IP:PORT,即可進行遠(yuǎn)程連接:如下圖所示:

相比較Jvisualvm功能更加強大一下,界面也更美觀

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容