直接配置即可
首先你要在tomcat服務器上添加一個管理員賬戶
然後你就可以查看這個頁面
這歷史服務器狀態,通過查看服務器狀態,調整服務器參數:
接下來看看我是怎麼配置的把。
打開tomcat的配置文件:server.xml
我直接粘代碼了:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="800"
minSpareThreads="100"
maxQueueSize="100"
prestartminSpareThreads="true"/>
這裏進行了2手配置
1.啓用Nio
2.修改了默認的連接池參數
下面我還禁用了AJP服務,也能增加服務器的性能
其實優化服務器,我們一般都是先縱向優化,然後在橫向優化,先把一個弄好了,其它的複製就可以了
禁用AJP服務很簡單,直接把下面這段代碼註釋掉就可以了
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
這樣tomcat的優化就已經完成了,當然,如果要最求更高的性能,我們還需要對服務器運行的虛擬機參數進行配置,在配置之前你需要知道虛擬機中的內存模型
包括: Yong(年輕代)被劃分爲3個部分 Eden 和兩個大小嚴格相同的Survivor區 Survivor區中某一時刻只有一個被使用,另一個留作垃圾收集時複製對象使用 在年輕代變滿時,GC就會將存活的對象移到空閒的Survivor區中,根據jvm的策略,經過一定次數的垃圾收集後,依然存活在該區域的對象就會轉移到終身代中。
Tenured(終身代)保存生命週期長的對象 老的對象 比如:spring容器中的對象 。
Perm(永久代)主要保存class,method,field對象
我相信,有些經驗的程序員一般都遇到過這個錯誤:java.lang.OutOfMenoryError : PermGen space 錯誤。
其實造成這個錯誤的原因就是,永久帶的內存不足了,在啓動服務器的時候加載到內存的jar包過多,導致內存溢出。下面會給出解決辦法,以及怎麼配置
jvm參數,以便調優jvm。
參數:
-Dfile.encoding=UTF-8編碼方式
-server 服務配置
-Xms 最小佔用內存
-Xmx 最大佔用內存
-XX:NewSize年輕代佔用內存
-XX:MaxNewSize年輕帶最大佔用內存
-XX:PermSize永久帶佔用內存
-XX:MaxPermSize永久代最大佔用內存
-XX:NewRatio年輕帶和終身代的比值
-XX:SurvivorRation兩個Survivor在年輕代的比值
-XX:MaxTenuringThreshold垃圾的最大年齡 默認爲15 如果是0 則不經過Survivor區,直接進入終身代
-XX:+DisableExplicitGC忽略手動調用GC,垃圾回收全權交給jvm處理。
如何使配置生效能?
在Catalina.bat/.sh文件的第一行
注意在linux中要加個大大的雙引號,將所有的參數引起來纔可以,而且在linux中不需要set
加入:set JAVA_OPTS= 後面接上參數就可以生效了,下面我做個樣例:
注意比對我上圖中jvm的參數
我的配置:因爲我是macOS所以採用和linux中相同的配置
JAVA_OPTS=" -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx3076m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=256m -XX:MaxPermSize=256M -XX:NewRatio=2 -XX:MaxTenuringThreshold=10 -XX:+DisableExplicitGC"