作者:Janti 來源:https://www.cnblogs.com/superfj/p/8667977.html
介紹
在SpringBoot的Web項目中,默認采用的是內置Tomcat,當然也可以配置支持內置的jetty,內置有什么好處呢?
- 方便微服務部署。
- 方便項目啟動,不需要下載Tomcat或者Jetty
針對目前的容器優化,目前來說沒有太多地方,需要考慮如下幾個點
- 線程數
- 超時時間
- jvm優化
針對上述的優化點來說,首先線程數是一個重點,初始線程數和最大線程數,初始線程數保障啟動的時候,如果有大量用戶訪問,能夠很穩定的接受請求。
而最大線程數量用來保證系統的穩定性,而超時時間用來保障連接數不容易被壓垮,如果大批量的請求過來,延遲比較高,不容易把線程打滿。這種情況在生產中是比較常見的 ,一旦網絡不穩定,寧愿丟包也不愿意把機器壓垮。
jvm優化一般來說沒有太多場景,無非就是加大初始的堆,和最大限制堆,當然也不是無限增大,根據的情況進快速開始
在spring boot配置文件中Application.yml,添加以下配置
server: tomcat: min-spare-threads: 20 max-threads: 100 connection-timeout: 5000
這塊對tomcat進行了一個優化配置,最大線程數是100,初始化線程是20,超時時間是5000ms
Jvm優化
這塊主要不是談如何優化,jvm優化是一個需要場景化的,沒有什么太多特定參數,一般來說在server端運行都會指定如下參數
初始內存和最大內存基本會設置成一樣的,具體大小根據場景設置,-server是一個必須要用的參數,至于收集器這些使用默認的就可以了,除非有特定需求。
1.使用-server模式
設置JVM使用server模式。64位JDK默認啟動該模式
JAVA -server -jar springboot-1.0.jar
2.指定堆參數
這個根據服務器的內存大小,來設置堆參數。
- -Xms :設置Java堆棧的初始化大小
- -Xmx :設置最大的java堆大小
java -server -Xms512m -Xmx768m -jar springboot-1.0.jar
設置初始化堆內存為512MB,最大為768MB。
3.遠程Debug
在服務器上將啟動參數修改為:
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
這個時候服務端遠程Debug模式開啟,端口號為8888。
在IDEA中,點擊Edit Configuration按鈕。
出現彈窗,點擊+按鈕,找到Remote選項。
在【1】中填入Remote項目名稱,在【2】中填IP地址和端口號,在【3】選擇遠程調試的項目module,配置完成后點擊OK即可
如果碰到連接超時的情況,很有可能服務器的防火墻的問題,舉例centos7,關閉防火墻
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall開機啟動
點擊debug按鈕,IDEA控制臺打印信息:
說明遠程調試成功。
JVM工具遠程連接
jconsole與Jvisualvm遠程連接
通常我們的web服務都輸部署在服務器上的,在window使用jconsole是很方便的,相對于linux就有一些麻煩了,需要進行一些設置。
1.查看hostname,首先使用
hostname -i
查看,服務器的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”為實際的服務器的IP地
3.重啟Linux,在服務器上輸入hostname -i,查看實際設置的IP地址是否為你設置的
4.啟動服務,參數為:
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=false jantent-1.0-SNAPSHOT.jar
ip為192.168.44.128,端口為911 。
5.打開Jconsole,進行遠程連接,輸入IP和端口即可
點擊連接,經過稍稍等待之后,即可完成連接,如下圖所示:
同理,JvisualVm的遠程連接是同樣的,啟動參數也是一樣。
然后在本機JvisualVm輸入IP:PORT,即可進行遠程連接:如下圖所示:
相比較Jvisualvm功能更加強大一下,界面也更美觀~