柚子快報(bào)激活碼778899分享:Tomcat 優(yōu)化
柚子快報(bào)激活碼778899分享:Tomcat 優(yōu)化
1、隱藏版本信息
隱藏 HTTP 頭部的版本信息
# 為 Connector 添加 server 屬性
vim /usr/local/tomcat/conf/server.xml
connectionTimeout="20000" redirectPort="8443" server="web/8.8.8"/> # 重啟 tomcat 服務(wù) systemctl restart tomcat # 測(cè)試 curl -I 192.168.137.253:8080 隱藏 404 頁面出現(xiàn)的版本號(hào) # 進(jìn)入 tomcat 的 lib 目錄找到 catalina.jar 文件 cd /usr/local/tomcat/lib/ # 解壓 catalina.jar 包 unzip catalina.jar | jar -xvf catalina.jar ls # 修改 ServerInfo.properties 文件 vim org/apache/catalina/util/ServerInfo.properties server.info=web/8.8.8 server.number=8.8.8.8 server.built=Jan 5 2024 15:56:27 UTC # 將修改后的信息壓縮回 jar 包 jar uvf catalina.jar org/apache/catalina/util/ServerInfo.properties # 刪除解壓目錄 rm -rf META-INF/ org/ # 測(cè)試 http://192.168.137.253:8080/abc.jsp 2、運(yùn)行模式的優(yōu)化 BIO(阻塞式) Tomcat 的默認(rèn)模式,該模式性能較低,沒有經(jīng)過任何優(yōu)化處理和支持,一個(gè)線程處理一個(gè)請(qǐng)求。缺點(diǎn):并發(fā)量過大時(shí),線程數(shù)較多,浪費(fèi)資源。Tomcat7 及以下版本,在 linux 系統(tǒng)中默認(rèn)使用該模式。 NIO(非阻塞 IO) Java NIO 可以讓你非阻塞的使用 IO,例如:當(dāng)線程從通道讀取數(shù)據(jù)到緩沖區(qū)時(shí),線程還是可以進(jìn)行其他事情。當(dāng)數(shù)據(jù)被寫入到緩沖區(qū)時(shí),線程可以繼續(xù)處理它。從緩沖區(qū)寫入通道也類似。Tomcat8 在 Linux 系統(tǒng)中默認(rèn)使用這種方式。 不過,在 tomcat8 中有最新的 nio2,速度更快,建議使用 nio2. # 修改配置文件 vim /usr/local/tomcat/conf/server.xml #修改標(biāo)紅地方 connectionTimeout="20000" redirectPort="8443" server="web/8.8.8"/> # 重啟 tomcat systemctl restart tomcat # 查看日志 cat /usr/local/tomcat/logs/catalina.out | grep nio2 APR APR(Apache Portable Runtime/Apache 可移植運(yùn)行時(shí)),是 Apache HTTP 服務(wù)器的支持庫。你可以簡單地理解為,Tomcat 將以 JNI 的形式調(diào)用 Apache HTTP 服務(wù)器的核心動(dòng)態(tài)鏈接庫來處理文件讀取或網(wǎng)絡(luò)傳輸操作,從而大大地提高 Tomcat 對(duì)靜態(tài)文件的處理性能。apache apr 也是在 Tomcat 上運(yùn)行高并發(fā)應(yīng)用的首選模式。從操作系統(tǒng)級(jí)別來解決異步的 IO 問題,大幅度的提高性能。必須要安裝 apr 和 native,直接啟動(dòng)就支持 apr。 Tomcat 可以使用 apr 來提供更好的伸縮性、性能和集成到本地服務(wù)器技術(shù)。用來提高 tomcat 的性能。 tomcat native 在具體的運(yùn)行平臺(tái)上,提供了一種優(yōu)化技術(shù),它本身是基于 APR(Apache Portable(輕便) Runtime)技術(shù),我們應(yīng)用了 tomcatnative 技術(shù)之后,tomcat 在跟操作系統(tǒng)級(jí)別的交互方面可以做得更好,并且它更像 apache 一樣,可以更好地作為一臺(tái) web server。 tomcat 可以利用 apache 的 apr 接口,使用操作系統(tǒng)的部分本地操作,從而提升性能 APR 提升的是靜態(tài)頁面處理能力。 # 安裝 apr、apr-devel yum install -y apr apr-devel gcc gcc-c++ openssl-devel openssl ls /usr/local/tomcat/bin/ tar zxf /usr/local/tomcat/bin/tomcat-native.tar.gz -C /usr/local/src/ cd /usr/local/src/tomcat-native-1.2.21-src/native/ ./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/usr/local/jdk1.8.0_171/ --with-ssl make && make install # 添加軟連接 ln -s /usr/local/apr/lib/* /usr/lib/ # 在 conf/server.xml 中修改 8080 端口對(duì)應(yīng)的 Connector vim /usr/local/tomcat/conf/server.xml connectionTimeout="20000" redirectPort="8443" server="web/8.8.8"/> # 重啟 tomcat systemctl restart tomcat # 看日志是否支持 native cat /usr/local/tomcat/logs/catalina.out | grep Native # 查看日志是否支持 apr cat /usr/local/tomcat/logs/catalina.out | grep apr 3、隱藏目錄結(jié)構(gòu) vim /usr/local/tomcat/conf/web.xml:默認(rèn) tomcat 就是隱層目錄結(jié)構(gòu)的。 4、線程池的優(yōu)化 Tomcat 默認(rèn)是沒有啟用線程池的,在 Tomcat 中每一個(gè)用戶請(qǐng)求都是一個(gè)線程,所以我們可以使用線程池來提高性能。Tomcat 的前端有一個(gè)調(diào)度線程,會(huì)將用戶的請(qǐng)求放入線程池中,一定時(shí)間后線程池中的用戶請(qǐng)求任務(wù)就變?yōu)楣ぷ骶€程。 使用線程池,用較少的線程處理較多的訪問,可以提高 tomcat 處理請(qǐng)求的能力。 # 開啟線程池 vim /usr/local/tomcat/conf/server.xml # 在 maxThreads="1500" minSpareThreads="100" maxSpareThreads="500" prestartminSpareThreads="true" maxQueueSize="300" /> 參數(shù) 說明 name 共享線程池的名字。這是 Connector 為了共享線程池要引用的名字,該名字必須唯一。 namePrefix 在 JVM 上,每個(gè)運(yùn)行線程都可以有一個(gè) name 字符串。這一屬性為線程池中每個(gè)線程的 name 字符串設(shè)置了一個(gè)前綴,Tomcat 將把線程號(hào)追加到這 一前綴的后面。 maxThreads 最大并發(fā)數(shù),默認(rèn)設(shè)置 200,一般建議在 500 ~1000,根據(jù)硬件設(shè)施和業(yè)務(wù)來判斷。 minSpareThreads 最小空閑線程數(shù),Tomcat 初始化時(shí)創(chuàng)建的線程數(shù),默認(rèn)設(shè)置 25 maxSpareThreads 最大空閑線程數(shù),一旦空閑線程超過這個(gè)值,Tomcat 就會(huì)關(guān)閉 不再需要的線程。 prestartminSpareThreads 在 Tomcat 初始化的時(shí)候就初始化minSpareThreads 的參數(shù)值,如果不等于 true,minSpareThreads 的值就沒啥效果了 maxQueueSize 最大的等待隊(duì)列數(shù),超過則拒絕請(qǐng)求 # 使用線程池:在 connector 中設(shè)置 executor屬性指向上面的執(zhí)行器 vim /usr/local/tomcat/conf/server.xml protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" server="web/8.8.8"/> 5、連接器的優(yōu)化 Connector 是連接器,負(fù)責(zé)接收客戶的請(qǐng)求,以及向客戶端回送響應(yīng)的消息。所以 Connector 的優(yōu)化是重要部分。默認(rèn)情況下 Tomcat 支持 200 線程訪問,超過這個(gè)數(shù)量的連接將被等待甚至超時(shí)放棄,所以我們需要提高這方面的處理能力。 vim /usr/local/tomcat/conf/server.xml protocol="org.apache.coyote.http11.Http11AprProtocol" connectionTimeout="20000" redirectPort="8443" server="web/8.8.8" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="1000" maxHttpHeaderSize="8192" tcpNoDelay="true" compression="on" disableUploadTimeout="true" enableLookups="false" URIEncoding="UTF-8"/> 參數(shù) 說明 maxThreads 最大線程數(shù)。即最多同時(shí)處理的連接數(shù),Tomcat 使用線程來處理接收的每個(gè)請(qǐng)求。這個(gè)值表示 Tomcat 可創(chuàng)建的最大的線程數(shù)。如果沒有指定,該屬性被設(shè)置為 200。如果使用了 executor 將忽略此連接器的該屬性,連接器將使用 executor。 minSpareThreads 最小空閑線程數(shù)。 acceptCount 接受最大隊(duì)列長度,當(dāng)隊(duì)列滿時(shí)收到的任何請(qǐng)求將被拒絕。 maxConnections 在任何給定的時(shí)間服務(wù)器接受并處理的最大連接數(shù)。 connectionTimeout 超時(shí)等待時(shí)間(毫秒) maxHttpHeaderSize 請(qǐng)求頭最大值 tcpNoDelay 如果為 true,服務(wù)器 socket 會(huì)設(shè)置 TCP_NO_DELAY 選項(xiàng),在大多數(shù)情況下可以提高性能。缺省情況下設(shè)為 true compression 是否開啟壓縮 GZIP ??山邮艿膮?shù)的值是“off ”(禁用壓縮),“on ” (允許壓縮,這會(huì)導(dǎo)致文本數(shù)據(jù)被壓縮),“force ”(強(qiáng)制在所有的情況下壓縮)。 提示:壓縮會(huì)增加 Tomcat 負(fù)擔(dān),最好采用 Nginx + Tomcat 或者 Apache + Tomcat方式,壓縮交由 Nginx/Apache 去做。 disableUploadTimeout 此標(biāo)志允許 servlet 容器在數(shù)據(jù)上傳時(shí)使用不同的連接超時(shí),通常較長。如果沒有指定,該屬性被設(shè)置為 true,禁用上傳超時(shí)。 enableLookups 關(guān)閉 DNS 反向查詢,DNS 反查很耗時(shí)間 6、禁用AJP連接器 AJP:協(xié)議是一個(gè)面向包的。web 服務(wù)器和 servlet 容器通過 TCP 鏈接進(jìn)行交互,為了節(jié)省 SOCKET 創(chuàng)建的昂貴代價(jià),WEB 服務(wù)器會(huì)嘗試維護(hù)一個(gè)永久 TCP 鏈接到Servlet 容器,并在多個(gè)請(qǐng)求和響應(yīng)周期過程會(huì)重用鏈接。 Web 客戶端訪問 tomcat 服務(wù)器上 jsp 組件的 2 種方式: 由于 Tomcat 服務(wù)器相對(duì)于 Nginx 服務(wù)器在處理靜態(tài)資源上效率較低。因此我們的網(wǎng)站服務(wù)器一般是 Nginx+Tomcat,Nginx 負(fù)責(zé)處理靜態(tài)資源,因此 AJP 協(xié)議我們?cè)谑褂?Nginx+Tomcat 架構(gòu)時(shí)可以關(guān)閉它來進(jìn)行效率的優(yōu)化。 # server.xml 文件,將 AJP 服務(wù)禁用掉即可。 vim /usr/local/tomcat/conf/server.xml # 重啟 tomcat systemctl restart tomcat # 測(cè)試:里面的 AJP 不見了 http://192.168.1.11:8080/manager/status 7、禁用8005端口 SHUTDOWN 端口是寫在 server 參數(shù)里面的,一般在安全設(shè)置時(shí)候建議把端口修 改為其他端口,SHUTDOWN 修改為其他復(fù)雜的字符串。 實(shí)際上這個(gè)端口是可以直接屏蔽不監(jiān)聽的。設(shè)置時(shí)候?qū)⑵?port 值修改為-1 就可以。 vim /usr/local/tomcat/conf/server.xml systemctl restart tomcat netstat -antup | grep java 8、JVM參數(shù)優(yōu)化 JVM 的內(nèi)存空間分為 3 大部分: 堆內(nèi)存、方法區(qū)、棧內(nèi)存 堆內(nèi)存可以劃分為新生代(Young)和老年代(Tenured),新生代中還可以再次劃分為 Eden區(qū)、From Survivor 區(qū)和 To Survivor 區(qū)。 棧內(nèi)存 Java 棧是與每一個(gè)線程關(guān)聯(lián)的,JVM 在創(chuàng)建每一個(gè)線程的時(shí)候,會(huì)分配一定的??臻g給線程。它主要用來存儲(chǔ)線程執(zhí)行過程中的局部變量,方法的返回值,以及方法調(diào)用上下文。棧空間隨著線程的終止而釋放。 堆內(nèi)存 Java 中堆是由所有的線程共享的一塊內(nèi)存區(qū)域,堆用來保存各種 JAVA 對(duì)象,比如數(shù)組,線程對(duì)象等。對(duì)于大多數(shù)應(yīng)用來說,Java 堆(Java Heap)是 Java 虛擬機(jī)所管理的內(nèi)存中最大的一塊。Java 堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建。 此內(nèi)存區(qū)域的唯一目的就是存放對(duì)象實(shí)例,幾乎所有的對(duì)象實(shí)例都在這里分配內(nèi)存 Young(年輕代) Tenured(老年代) 對(duì)象在被創(chuàng)建時(shí),內(nèi)存首先是在年輕代進(jìn)行分配(注意,大對(duì)象可以直接在老年代分配)。 當(dāng)年輕代需要回收時(shí)會(huì)觸發(fā) Minor GC(也稱作 Young GC,Garbage Collection,垃圾收集,垃圾回收)。 Young 區(qū)被劃分為三部分,Eden 區(qū)和兩個(gè)大小相同的 Survivor 區(qū),其中 Survivor區(qū)間中,某一時(shí)刻只有其中一個(gè)是被使用的,另外一個(gè)留做垃圾收集時(shí)復(fù)制對(duì)象用, 在 Young 區(qū)間變滿的時(shí)候,minor GC ([?ma?n?r])就會(huì)將存活的對(duì)象移到空閑的 Survivor 區(qū)間中,根據(jù) JVM 的策略,在經(jīng)過幾次垃圾收集后,仍然存活于 Survivor的對(duì)象將被移動(dòng)到 Tenured 區(qū)間。 老年代用于存放在年輕代中經(jīng)多次垃圾回收仍然存活的對(duì)象,可以理解為比較老一點(diǎn)的對(duì)象,例如緩存對(duì)象,一般如果系統(tǒng)中用了 application 級(jí)別的緩存,緩存中的對(duì)象往往會(huì)被轉(zhuǎn)移到這一區(qū)間。當(dāng)一些對(duì)象在 Young 復(fù)制轉(zhuǎn)移一定的次數(shù)以后,對(duì)象就會(huì)被轉(zhuǎn)移到 Tenured 區(qū)。當(dāng)老年代滿了的時(shí)候就需要對(duì)老年代進(jìn)行垃圾回收,老年代的垃圾回收稱作 Major GC(也稱作 Full GC)。 方法區(qū) 方法區(qū)存放了要加載的類的信息(如類名,修飾符)、類中的靜態(tài)變量、final 定義的常量、類中的 field、方法信息,當(dāng)開發(fā)人員調(diào)用類對(duì)象中的 getName、isInterface 等方法來獲取信息時(shí),這些數(shù)據(jù)都來源于方法區(qū)。方法區(qū)是全局共享的,在一定條件下它也會(huì)被 GC。當(dāng)方法區(qū)使用的內(nèi)存超過它允許的大小時(shí),就會(huì)拋出 OutOfMemory:PermGen Space 異常。 在 JDK8 之前的 Hotspot 虛擬機(jī)中,這塊區(qū)域?qū)?yīng)的是 Permanent Generation(永久代),一般的,方法區(qū)上執(zhí)行的垃圾收集是很少的,因此方法區(qū)又被稱為持久代的原因之一。 隨著 JDK8 的到來,JVM 不再有永久代(PermGen)。但類的元數(shù)據(jù)信息(metadata)還在,只不過不再是存儲(chǔ)在連續(xù)的堆空間上,而是移動(dòng)到叫做“Meta space”的本地內(nèi)存(Native memory)。 對(duì) jvm 參數(shù)的優(yōu)化我們主要是對(duì)堆內(nèi)存的優(yōu)化,下圖中的 Perm 代表的是永久代,但是注意永久代并不屬于堆內(nèi)存中的一部分。 堆內(nèi)存大小 對(duì)于堆區(qū)大小,可以通過參數(shù)-Xms 和-Xmx 來控制,-Xms 為 JVM 啟動(dòng)時(shí)向系統(tǒng)申請(qǐng)的 heap 內(nèi)存,默認(rèn)為物理內(nèi)存的 1/64,但小于 1GB;-Xmx 為 JVM 可申請(qǐng)的最大Heap 內(nèi)存,默認(rèn)為物理內(nèi)存的 1/4,默認(rèn)當(dāng)剩余堆空間小于 40%時(shí),JVM 會(huì)增大 Heap 到-Xmx 大小,可通過-XX:MinHeapFreeRatio 參數(shù)來控制這個(gè)比例;當(dāng)空余堆內(nèi)存大于 70%時(shí),JVM 會(huì)減小 Heap 大小到-Xms 指定大小,可通過-XX:MaxHeapFreeRatio來指定這個(gè)比例。對(duì)于系統(tǒng)而言,為了避免在運(yùn)行期間頻繁的調(diào)整 Heap 大小,我 們通常將-Xms 和-Xmx 設(shè)置成一樣。 年輕代 年輕代由 Eden Space 和兩塊相同大小的 Survivor Space(又稱 S0 和 S1)構(gòu)成,可通過-Xmn 參數(shù)來調(diào)整新生代大小,也可通過-XX:SurvivorRatio 來調(diào)整 Eden Space 和 Survivor Space 大小。 默認(rèn)的,Eden : from : to = 8 : 1 : 1 ( 可以通過參數(shù) –XX:SurvivorRatio 來設(shè)定 ),即: Eden = 8/10 的新生代空間大小,from = to = 1/10 的新生代空間大小。 老年代 老年代所占用的內(nèi)存大小為-Xmx 對(duì)應(yīng)的值減去-Xmn 對(duì)應(yīng)的值。年輕代 ( Young ) 與老年代 ( Old ) 的比例的值為 1:2 ( 該值可以通過參數(shù) – XX:NewRatio 來指定 ) JVM 方法區(qū)(永久代) JVM 方法區(qū)的相關(guān)參數(shù),最小值:--XX:PermSize;最大值 --XX:MaxPermSize。 # 在 catalina.sh 一大段注釋的下面,正文配置的上面加入 vim /usr/local/tomcat/bin/catalina.sh export JAVA_OPTS="-server -Xms128M -Xmx256M -Xss512k -XX:+AggressiveOpts - XX:+UseBiasedLocking -XX:+DisableExplicitGC -XX:MaxTenuringThreshold=15 - XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled - XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m - XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly - Djava.awt.headless=true" 參數(shù) 說明 -server 表示這是應(yīng)用于服務(wù)器的配置 -Xms 表示 java 虛擬機(jī)堆區(qū)內(nèi)存初始內(nèi)存分配的大小,虛擬機(jī)在啟動(dòng)時(shí)向系統(tǒng)申請(qǐng)的內(nèi)存的大小。 -Xmx 表示 java 虛擬機(jī)堆區(qū)內(nèi)存可被分配的最大上限,通常會(huì)將 -Xms 與 -Xmx 兩個(gè)參數(shù)的配置相同的值,初始堆內(nèi)存與最大堆內(nèi)存大小設(shè)為一致,這樣虛擬機(jī)一 次性的分配內(nèi)存,而不至于在初始堆大小不夠用又向系統(tǒng)分配內(nèi)存。 而堆的最大值受限于系統(tǒng)使用的物理內(nèi)存。一般使用數(shù)據(jù)量較大的應(yīng)用程序會(huì)使用持久對(duì)象,內(nèi)存使用有可能迅速地增長。當(dāng)應(yīng)用程序需要的內(nèi)存超出堆的最大值時(shí)虛擬機(jī)就會(huì)提示內(nèi)存溢出,應(yīng)用可能會(huì)導(dǎo)致 java.lang.OutOfMemory 錯(cuò)誤,并且導(dǎo)致應(yīng)用服務(wù)崩潰。因此一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的 80%。 Xmn 設(shè)置年輕代大小 -XX:newSize 表示年輕代初始內(nèi)存的大小,應(yīng)該小于 -Xms 的值 -XX:MaxnewSize 表示年輕代可被分配的內(nèi)存的最大上限;當(dāng)然這個(gè)值應(yīng)該小于 - Xmx 的值; -Xmn 至于這個(gè)參數(shù)則是對(duì) -XX:newSize、-XX:MaxnewSize 兩個(gè)參數(shù)的同時(shí)配置, 也 就 是 說 如 果 通 過 -Xmn 來 配 置 年 輕 代 的 內(nèi) 存 大 小 , 那 么 -XX:newSize = -XX:MaxnewSize = -Xmn,雖然會(huì)很方便,但需要注意的是這個(gè)參數(shù)是在 JDK1.4 版本以后才使用的。 -Xss 是指設(shè)定每個(gè)線程的棧大小。這個(gè)就要依據(jù)你的程序,看一個(gè)線程大約需要占用多少內(nèi)存,可能會(huì)有多少線程同時(shí)運(yùn)行等。 -XX:PermSize 表示非堆區(qū)初始內(nèi)存分配大小,其縮寫為permanent size(持久化內(nèi)存) -XX:MaxPermSize 表示對(duì)非堆區(qū)分配的內(nèi)存的最大上限。XX:MaxPermSize 設(shè)置過小會(huì)導(dǎo)致 java.lang.OutOfMemoryError: PermGen space 就是內(nèi)存益出。這里面非常要注意的一點(diǎn)是:在配置之前一定要慎重的考慮一下自身軟件所需要 的非堆區(qū)內(nèi)存大小,因?yàn)榇颂巸?nèi)存是不會(huì)被 java 垃圾回收機(jī)制進(jìn)行處理的地方。 并且更加要注意的是 最大堆內(nèi)存與最大非堆內(nèi)存的和絕對(duì)不能夠超出操作系統(tǒng)的可用內(nèi)存。 -XX:NewRatio 設(shè)置年輕代(包括 Eden 和兩個(gè) Survivor 區(qū))與老年代的比值(除去永久代)。設(shè)置為 2,則年輕代與終身代所占比值為 1:2,年輕代占整個(gè)堆棧的1/3。 -XX:SurvivorRatio=4 設(shè)置堆內(nèi)存年輕代中 Eden 區(qū)與 Survivor 區(qū)大小的比值 。設(shè)置為 4,則兩個(gè) Survivor 區(qū)(JVM 堆內(nèi)存年輕代中默認(rèn)有 2 個(gè) Survivor 區(qū))與一個(gè) Eden 區(qū)的比值為 2:4,一個(gè) Survivor 區(qū)占 整個(gè)年輕代的 1/6。 -XX:MaxTenuringThreshold 設(shè)置垃圾最大年齡,默認(rèn)為:15。如果設(shè)置為 0 的話, 則年輕代對(duì)象不經(jīng)過 Survivor 區(qū),直接進(jìn)入年老代。 對(duì)于年老代比較多的應(yīng)用,可以提高效率。如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)象會(huì)在 Survivor 區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間。 增加對(duì)象在年輕代即被回收的概率。 需要注意的是,設(shè)置了 -XX:MaxTenuringThreshold,并不代表著,對(duì)象一定在年輕代存活 15 次才被晉升進(jìn)入老年代,它只是一個(gè)最大值,事實(shí)上,存在一個(gè)動(dòng)態(tài)計(jì)算機(jī)制,計(jì)算每次晉入老年代的閾值,取閾值和 MaxTenuringThreshold 中較小的一 個(gè)為準(zhǔn)。 -XX:+UseParNewGC 設(shè)置年輕代為并發(fā)收集。 -XX:+UseConcMarkSweepGC 設(shè)置年老代為并發(fā)收集。 -XX:ParallelGCThreads=20 配置并行收集器的線程數(shù),即:同時(shí)多少個(gè)線程一起進(jìn)行 垃圾回收。此值最好配置與處理器數(shù)目相等。 # 查看 systemctl restart tomcat http://192.168.1.11:8080/manager/status 柚子快報(bào)激活碼778899分享:Tomcat 優(yōu)化 參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。