小業務,流量不大,主要是接口高峯期會出現請求數比較多,使用Tomcat8.5 默認配置穩定運行了一段時間,後續業務增長巡查中發現出現內存不足,於是百度了一下優化方案。
有效優化地方:
1、增加JVM堆內存
相關說明如下:
可以給Java虛擬機設置使用的內存,但是如果選擇不對的話,虛擬機不會補償。可通過命令行的方式改變虛擬機使用內存的大小。
-Xms<size> 表示JVM初始化堆的大小,-Xmx<size>表示JVM堆的最大值。一般建議堆的最大值設置爲可用內存的最大值的80%,並將-Xms和-Xmx選項設置爲相同。
具體操作方式:
Windows系統
bin目錄下增加文件:setenv.bat
內容爲:
SET JAVA_OPTS=-server -Xms1g -Xmx1g
可以通過Java VisualVM監控
路徑:\bin\jvisualvm.exe
2、調整線程數目
第一步,打開共享的線程池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
maxThreads="4000" minSpareThreads="1000" maxSpareThreads="2000" maxIdleTime="60000"
prestartminSpareThreads = "true"
maxQueueSize = "100"/>
第二步 在Connector裏指定使用共享線程池
<Connector executor="tomcatThreadPool" port="8080" maxHttpHeaderSize="8192"
maxThreads="4000" minSpareThreads="1000" maxSpareThreads="2000"
enableLookups="false" redirectPort="8443" acceptCount="2000"
connectionTimeout="20000" disableUploadTimeout="true" />
百度到還有其他優化,感覺影響不大,沒有一一測試,服務器4核8g的,上面也沒跑啥業務,併發大點就掛了感覺不科學,用了以上配置之後暫時穩定。
第二處優化參考了多個,參數沒有具體測試會不會重複或是否生效之類的,高手請幫忙指點。