tomcat服務器的優化

直接配置即可

首先你要在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"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章