久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Tomcat重要參數如何調優

155次閱讀
沒有評論

共計 2734 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 Tomcat 重要參數如何調優,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一般最常做的更改,就是修改服務器的端口,也就是 server.xml 里的 Connector 部分。典型如下圖所示:

其實,大部分優化,也是在 Connector 標簽之內,從端口、并發到線程,都可以在這里配置。

一. 3 個參數搞定并發配置

作為一個能承接高并發互聯網請求的 Web 容器,首當其沖的當然是海量請求的沖擊。幸運的是 Tomcat 支持 NIO,我們可以通過調整線程數和并發配置,讓它表現出最佳的性能。

maxThreads —  tomcat 接收客戶端請求的最大線程數,也就是同時處理任務的個數,它的默認大小為 200; 一般來說,在高并發的 I / O 密集型應用中,這個值設置為 1000 左右比較合理

maxConnections   這個參數是指在同一時間,tomcat 能夠接受的最大連接數。對于 Java 的阻塞式 BIO,默認值是 maxthreads 的值; 如果在 BIO 模式使用定制的 Executor 執行器,默認值將是執行器中 maxThreads 的值。對于 Java   新的 NIO 模式,maxConnections 默認值是 10000,所以這個參數我們一般保持不動即可

acceptCount —   當線程數量達到上面設置的值,所能接受的最大排隊數量。超過了這個值,請求就會被拒絕。我一般會設置成和 maxThreads 設置成一樣大的

簡單說明一下上面三個參數的關系:

系統能夠保持的連接數

maxConnections+acceptCount,區別是 maxConnections 中的連接可以被調度處理;acceptCount 中的連接只能等待排隊

系統能處理的請求數

maxThreads 的大小,實際能夠工作的線程數量。

幸福指數:maxThreads maxConnections acceptCount。

現在有些文章還充斥著 maxProcessors 和 minProcessors。但這兩個參數,從 Tomcat5 開始被 deprecated,從 6 開始就徹底沒了。

只能說你看到的這些文章,可能真的是不懂技術的運營發表的。

以 8 為代表,具體配置參數可以參見:

https://tomcat.apache.org/tomcat-8.0-doc/config/http.html

二、線程配置

在并發配置方面,可以看到我們只有 minSpareThreads,但是卻沒有 maxSpareThreads。這是因為,從 Tomcat  6 開始增加 Executor 節點,這個參數已經沒用了。

由于線程是一個池子,所以它的配置,滿足池的一切特點。

參照:

https://tomcat.apache.org/tomcat-8.0-doc/config/executor.html

namePrefix — 每個新開線程的名稱前綴

maxThreads — 線程池中的最大線程數

minSpareThreads — 一直處于活躍狀態的線程數

maxIdleTime — 線程的空閑時間,在超過空閑時間時這些線程則會被銷毀

threadPriority — 線程池中線程的優先級,默認為 5

三、搞定 JVM 配置

tomcat 是 Java 應用,所以 JVM 的配置同樣會影響它的性能。比較重要的配置參數如下。

2.1、內存區域大小

首先要調整的,就是各個分區的大小,不過這也要分垃圾回收器,我們僅看一下一些全局的參數。

-XX:+UseG1GC 首先,要指定 JVM 使用的垃圾回收器。盡量不要靠默認值去保證,要顯式的指定一個。

-Xmx 設置堆的最大值,一般為操作系統的 2 / 3 大小。

-Xms 設置堆的初始值,一般設置成和 Xmx 一樣的大小來避免動態擴容。

-Xmn   年輕代大小,默認新生代占堆大小的 1 /3。高并發快消亡場景可適當加大這個區域。對半,或者更多,都是可以的。但是在 G1 下,就不用再設置這個值了,它會自動調整。

-XX:MaxMetaspaceSize   限制元空間的大小,一般 256M 足夠。這一般和初始大小 **-XX:MetaspaceSize** 設置成一樣的。

-XX:MaxDirectMemorySize 設置直接內存的最大值,限制通過 DirectByteBuffer 申請的內存。

-XX:ReservedCodeCacheSize 設置 JIT 編譯后的代碼存放區大小,如果觀察到這個值有限制,可以適當調大,一般夠用。

-Xss 設置棧的大小,默認為 1M,已經足夠用了。

2.2、內存調優

-XX:+AlwaysPreTouch 啟動時就把參數里說好了的內存全部初始化,啟動時間會慢一些,但運行速度會增加。

-XX:SurvivorRatio 默認值為 8。表示伊甸區和幸存區的比例。

-XX:MaxTenuringThreshold   這個值在 CMS 下默認為 6,G1 下默認為 15。這個值和我們前面提到的對象提升有關,改動效果會比較明顯。對象的年齡分布可以使用 **-XX:+PrintTenuringDistribution** 打印,如果后面幾代的大小總是差不多,證明過了某個年齡后的對象總能晉升到老生代,就可以把晉升閾值設小。

PretenureSizeThreshold 超過一定大小的對象,將直接在老年代分配。不過這個參數用的不是很多。

2.3、垃圾回收器優化

G1 垃圾回收器

-XX:MaxGCPauseMillis 設置目標停頓時間,G1 會盡力達成。

-XX:G1HeapRegionSize 設置小堆區大小。這個值為 2 的次冪,不要太大,也不要太小。如果是在不知道如何設置,保持默認。

-XX:InitiatingHeapOccupancyPercent 當整個堆內存使用達到一定比例 (默認是 45%),并發標記階段就會被啟動。

-XX:ConcGCThreads 并發垃圾收集器使用的線程數量。默認值隨 JVM 運行的平臺不同而不同。不建議修改。

四、其他重要配置

再看幾個在 Connector 中配置的重要參數。

enableLookups —   調用 request、getRemoteHost() 執行 DNS 查詢,以返回遠程主機的主機名,如果設置為 false,則直接返回 IP 地址。這個要根據需求來

URIEncoding — 用于解碼 URL 的字符編碼,沒有指定默認值為 ISO-8859-1

connectionTimeout — 連接的超時時間 (以毫秒為單位)

redirectPort — 指定服務器正在處理 http 請求時收到了一個 SSL 傳輸請求后重定向的端口號

關于“Tomcat 重要參數如何調優”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計2734字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 普宁市| 萨嘎县| 汽车| 涡阳县| 青州市| 弋阳县| 密山市| 连城县| 景德镇市| 广河县| 古丈县| 乌兰县| 南川市| 常熟市| 阳春市| 墨玉县| 江城| 出国| 和政县| 崇阳县| 凯里市| 茶陵县| 泌阳县| 凤凰县| 长岛县| 龙泉市| 松溪县| 子洲县| 石首市| 青田县| 台南县| 汝南县| 阿拉善盟| 南宫市| 米易县| 壶关县| 神农架林区| 黑龙江省| 堆龙德庆县| 中西区| 鄂州市|