tomcat優(yōu)化配置小結(jié)
1修改Tomcat的內(nèi)存配置,打開(kāi)$TOMCAT_HOME/bin/catalina.sh文件
內(nèi)存優(yōu)化:
- -server參數(shù):表示以服務(wù)模式啟動(dòng),啟動(dòng)速度會(huì)稍微慢一點(diǎn),但性能會(huì)高很多。不加這個(gè)參數(shù),默認(rèn)是以客戶端模式啟動(dòng)。 -server:?jiǎn)⒂胘dk的server版本
- -XX:PermSize:設(shè)置非堆內(nèi)存初始值,默認(rèn)是物理內(nèi)存的1/64。
- -XX:MaxNewSize:新生代占整個(gè)堆內(nèi)存的最大值。
- -XX:MaxPermSize:Perm(俗稱方法區(qū))占整個(gè)堆內(nèi)存的最大值,也稱內(nèi)存最大永久保留區(qū)域
1)錯(cuò)誤提示:java.lang.OutOfMemoryError:Java heap space
set JAVA_OPTS=-Xms512m-Xmx512m
2)錯(cuò)誤提示:java.lang.OutOfMemoryError: PermGenspace
setJAVA_OPTS=-XX:PermSize=128M
2 連接數(shù)優(yōu)化,主要是在conf/server.xml配置文件中進(jìn)行修改。
2.1、優(yōu)化線程數(shù)
增加maxThreads和acceptCount屬性(使acceptCount大于等于maxThreads)
- maxThreads:tomcat可用于請(qǐng)求處理的最大線程數(shù),默認(rèn)是200
- minSpareThreads:tomcat初始線程數(shù),即最小空閑線程數(shù)
- maxSpareThreads:tomcat最大空閑線程數(shù),超過(guò)的會(huì)被關(guān)
- acceptCount:當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理.默認(rèn)100
2.2、使用線程池
在server.xml中增加executor節(jié)點(diǎn),然后配置connector的executor屬性
- namePrefix:線程池中線程的命名前綴
- maxThreads:線程池的最大線程數(shù)
- minSpareThreads:線程池的最小空閑線程數(shù)
- maxIdleTime:超過(guò)最小空閑線程數(shù)時(shí),多的線程會(huì)等待這個(gè)時(shí)間長(zhǎng)度,然后關(guān)閉
- threadPriority:線程優(yōu)先級(jí)
當(dāng)tomcat并發(fā)用戶量大的時(shí)候,單個(gè)jvm進(jìn)程確實(shí)可能打開(kāi)過(guò)多的文件句柄,這時(shí)會(huì)報(bào)java.net.SocketException:Too many open files錯(cuò)誤??墒褂孟旅娌襟E檢查:
ps -ef |grep tomcat 查看tomcat的進(jìn)程ID,記錄ID號(hào),假設(shè)進(jìn)程ID為10001
lsof -p 10001|wc -l 查看當(dāng)前進(jìn)程id為10001的 文件操作數(shù)
使用命令:ulimit -a 查看每個(gè)用戶允許打開(kāi)的最大文件數(shù)
3 tomcat connector三種運(yùn)行模式(BIO,NIO,APR)
3.1、三種模式比較
1)BIO:一個(gè)線程處理一個(gè)請(qǐng)求。缺點(diǎn):并發(fā)量高時(shí),線程數(shù)較多,浪費(fèi)資源。Tomcat7或以下在Linux系統(tǒng)中默認(rèn)使用這種方式
2)NIO:利用Java的異步IO處理,可以通過(guò)少量的線程處理大量的請(qǐng)求。Tomcat8在Linux系統(tǒng)中默認(rèn)使用這種方式。Tomcat7必須修改Connector配置來(lái)啟動(dòng)(conf/server.xml配置文件):
<Connectorport="8080"protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000"redirectPort="8443"/>
3)APR(Apache Portable Runtime):從操作系統(tǒng)層面解決io阻塞問(wèn)題。Linux如果安裝了apr和native,Tomcat直接啟動(dòng)就支持apr。
3.2、apr模式
安裝apr以及tomcat-native
yum -y install
make && make install
安裝成功后還需要對(duì)tomcat設(shè)置環(huán)境變量,方法是在catalina.sh文件中增加1行
修改8080端對(duì)應(yīng)的conf/server.xml
4 并發(fā)配置優(yōu)化
Tomcat的并發(fā)請(qǐng)求處理數(shù)量=maxThreads + acceptCount
enableLookups:如果為true,調(diào)用request.getRemoteHost會(huì)執(zhí)行DNS反查,反向解析IP對(duì)應(yīng)的域名或主機(jī),效率較低,建議設(shè)為false。
5 tomcat配置優(yōu)化
6 執(zhí)行器優(yōu)化(線程池)
Executor重要參數(shù)說(shuō)明:
- name:共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認(rèn)值:None;
- namePrefix:在JVM上,每個(gè)運(yùn)行線程都可以有一個(gè)name 字符串。這一屬性為線程池中每個(gè)線程的name字符串設(shè)置了一個(gè)前綴,Tomcat將把線程號(hào)追加到這一前綴的后面。默認(rèn)值:tomcat-exec-;
- maxThreads:該線程池可以容納的最大線程數(shù)。默認(rèn)值:200;
- maxIdleTime:在Tomcat關(guān)閉一個(gè)空閑線程之前,允許空閑線程持續(xù)的時(shí)間(以毫秒為單位)。只有當(dāng)前活躍的線程數(shù)大于minSpareThread的值,才會(huì)關(guān)閉空閑線程。默認(rèn)值:60000(一分鐘)。
- minSpareThreads:Tomcat應(yīng)該始終打開(kāi)的最小不活躍線程數(shù)。默認(rèn)值:25。
- threadPriority:線程的等級(jí)。默認(rèn)是Thread.NORM_PRIORITY
Connector重要參數(shù)說(shuō)明:
- executor:表示使用該參數(shù)值對(duì)應(yīng)的線程池;
- minProcessors:服務(wù)器啟動(dòng)時(shí)創(chuàng)建的處理請(qǐng)求的線程數(shù);
- maxProcessors:最大可以創(chuàng)建的處理請(qǐng)求的線程數(shù);
- acceptCount:指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。
7 禁用AJP連接器
我們一般是使用Nginx+tomcat的架構(gòu),所以用不著AJP協(xié)議,所以把AJP連接器禁用
8 配置優(yōu)化
8.1 Connector 優(yōu)化
<Connector port="8080" protocol="HTTP/1.1" maxThreads="1000" minSpareThreads="100" acceptCount="1000" maxConnections="1000" connectionTimeout="20000" maxHttpHeaderSize="8192" tcpNoDelay="true" compression="on" compressionMinSize="2048" disableUploadTimeout="true" redirectPort="8443" enableLookups="false" URIEncoding="UTF-8" />
8.2 線程池
Executor代表了一個(gè)線程池,可以在Tomcat組件之間共享。使用線程池的好處在于減少了創(chuàng)建銷毀線程的相關(guān)消耗,而且可以提高線程的使用效率。
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="1000" minSpareThreads="100" maxIdleTime="60000" maxQueueSize="Integer.MAX_VALUE" prestartminSpareThreads="false" threadPriority="5" className="org.apache.catalina.core.StandardThreadExecutor"/>
8.3 Listener
Server標(biāo)簽中可以配置多個(gè)Listener,其中 JreMemoryLeakPreventionListener是用來(lái)預(yù)防JRE內(nèi)存泄漏。此Listener只需在Server標(biāo)簽中配置即可,默認(rèn)情況下無(wú)需配置,已經(jīng)添加在 Server中。
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
9 設(shè)置Tomcat的編碼
10 設(shè)置Tomcat的熱部署
docBase:項(xiàng)目所在路徑,可以使用絕對(duì)路徑或相對(duì)路徑,相對(duì)路徑是相對(duì)于webapps ;
path:訪問(wèn)項(xiàng)目的路徑;
reloadable:是否自動(dòng)加載新增或改變的class文件;
11 修改Tomcat命令窗口的名字
在運(yùn)行多個(gè)tomcat窗口的時(shí)候,可以通過(guò)修改tomcat命令窗口的名字來(lái)區(qū)分不同的tomcat;
到此這篇關(guān)于tomcat優(yōu)化配置小結(jié)的文章就介紹到這了,更多相關(guān)tomcat優(yōu)化配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tomcat中連接器(Connector)的實(shí)現(xiàn)
Tomcat中的連接器負(fù)責(zé)處理客戶端通信,支持HTTP、HTTPS和AJP協(xié)議,通過(guò)配置連接器,可以滿足不同的部署需求,包括端口、協(xié)議和SSL參數(shù),正確配置連接器是確保Tomcat服務(wù)器高效運(yùn)行和安全的關(guān)鍵2024-11-11IntelliJ?IDEA中配置Tomcat超詳細(xì)教程
這篇文章主要介紹了IntelliJ?IDEA中配置Tomcat超詳細(xì)教程,需要的朋友可以參考下2022-08-08eclipse中的項(xiàng)目無(wú)法添加到tomcat中的處理方法
這篇文章主要介紹了eclipse中的項(xiàng)目無(wú)法添加到tomcat中,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05CentOS系統(tǒng)下安裝Tomcat7的過(guò)程詳解
今天開(kāi)始學(xué)習(xí)Tomcat7 ,學(xué)習(xí)前首先需要安裝,我用的系統(tǒng)是CentOS系統(tǒng),所以下面這篇文章主要介紹了CentOS系統(tǒng)下安裝Tomcat7的過(guò)程,需要的朋友可以參考下,下面來(lái)一起看看吧。2016-12-12詳解如何通過(guò)tomcat的ManagerServlet遠(yuǎn)程部署項(xiàng)目
這篇文章主要介紹了詳解如何通過(guò)tomcat的ManagerServlet遠(yuǎn)程部署項(xiàng)目,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08TomCat啟動(dòng)找不到配置的環(huán)境變量解決
本文主要介紹了TomCat啟動(dòng)找不到配置的環(huán)境變量解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12idea中Tomcat服務(wù)器啟動(dòng)錯(cuò)誤問(wèn)題及解決
這篇文章主要介紹了idea中Tomcat服務(wù)器啟動(dòng)錯(cuò)誤問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11IDEA編輯器整合Apache Tomcat的詳細(xì)教程
這篇文章主要介紹了IDEA編輯器整合Apache Tomcat教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Tomcat8使用cronolog來(lái)進(jìn)行Catalina.Out日志分割方法
今天通過(guò)本文給大家分享如何使用cronolog來(lái)分割catalina.out日志文件,對(duì)Tomcat Catalina.Out日志分割方法感興趣的朋友跟隨小編一起看看吧2021-09-09