新聞中心
當(dāng)我們?cè)谑褂肨omcat時(shí),經(jīng)常會(huì)出現(xiàn)內(nèi)存耗盡的情況,導(dǎo)致應(yīng)用程序崩潰甚至服務(wù)器崩潰。因此,內(nèi)存優(yōu)化是非常重要的一項(xiàng)工作。接下來(lái),我們將為您介紹如何在Linux安裝版Tomcat上進(jìn)行內(nèi)存優(yōu)化指南。

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,先為芒康等服務(wù)建站,芒康等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為芒康企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
之一步: 調(diào)整JVM內(nèi)存參數(shù)
JVM是Tomcat的虛擬機(jī)。因此,調(diào)整JVM的內(nèi)存參數(shù)是優(yōu)化Tomcat內(nèi)存的之一步。
方法如下:
1.編輯$TOMCAT_HOME/bin/catalina.sh文件,找到JAVA_OPTS參數(shù):
JAVA_OPTS=”-server -Xms1024m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m”
2.增加-XX:+UseG1GC參數(shù)
JAVA_OPTS=” -server -Xms1024m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m -XX:+UseG1GC”
3.測(cè)試JVM參數(shù)
在catalina.sh文件中寫入以下命令:
echo $JAVA_OPTS
然后更改Tomcat的JAVA_OPTS變量,您將看到結(jié)果如下:
-server -Xms1024m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m -XX:+UseG1GC
第二步: 減少應(yīng)用程序和Tomcat的內(nèi)存使用
在以下情況下,Tomcat內(nèi)存的使用不是100%由JVM內(nèi)存控制。還需要優(yōu)化應(yīng)用程序代碼和Tomcat容器本身。
1. 減小P的BUFFER大小
打開$TOMCAT_HOME/conf/web.xml 文件
找到標(biāo)簽內(nèi)的javax.servlet.jsp.jstl.fmt.localizationContext
修改為以下內(nèi)容:
??javax.servlet.jsp.jstl.fmt.localizationContext
??messages
??buffer
??8192
??isELIgnored
??false
增加標(biāo)簽中的buffer和8192,從而減小P的BUFFER大小。
2. 增加壓縮靜態(tài)資源壓縮
默認(rèn)情況下,Tomcat不支持壓縮靜態(tài)資源,可能會(huì)浪費(fèi)大量的內(nèi)存。為了將內(nèi)存使用減少到更低限度,您可以使用下面的方法開啟壓縮。
打開$TOMCAT_HOME/conf/server.xml 文件。
找到以下內(nèi)容:
connectionTimeout=”20230″
redirectPort=”8443″ />
你需要將其修改為如下所示:
connectionTimeout=”20230″
redirectPort=”8443″
compression=”on”
compressionMinSize=”2023″
noCompressionUserAgents=”gozilla, traviata”
compressableMimeType=”text/html,text/xml,text/javascript,text/css”/>
3. 在應(yīng)用程序中減少對(duì)象的大小
在寫應(yīng)用程序的時(shí)候,我們盡量讓對(duì)象都變得更小。
例如:
String str = “Hello World”;
List list = new ArrayList();
這里,我們可以使用:
String str = “Hello World”;
List list = new ArrayList(5);
減少內(nèi)存使用量。這樣,我們能夠節(jié)省應(yīng)用程序和Tomcat的內(nèi)存使用。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220Tomcat配置實(shí)踐
要部署使用tomcat,則必須了解tomcat的目錄結(jié)構(gòu)以及各目錄的作用。這里以tomcat7為例,進(jìn)入tomcat安裝目錄下:
前端請(qǐng)求被tomcat直接接收或者由前端的代理,通過(guò)HTTP,或者AJP代理給Tomcat,此時(shí)請(qǐng)求被tomcat中的connector接收,不同的connector和Engine被service組件關(guān)聯(lián)起來(lái),在一個(gè)Engine中定義了許多的虛擬主機(jī),由Host容器定義,每一個(gè)Host容器代表一個(gè)主機(jī),在各自的Host中,又可以定義多個(gè)Context,用此來(lái)定義一個(gè)虛擬主機(jī)中的多個(gè)獨(dú)立的應(yīng)用程序。
Tomcat Server的結(jié)構(gòu)圖如下:
看上去很復(fù)雜。其實(shí),大部分都是注釋。下面是一個(gè)簡(jiǎn)圖說(shuō)明了各組件之間的關(guān)系!
上面列出的比較常用的組件元素,server.xml文件中可定義的元素非常多,包括Server, Service, Connector, Engine, Cluster, Host, Alias, Context, Realm, Valve, Manager, Listener, Resources, Resource, ResourceEnvRef, ResourceLink, WatchedResource, GlobalNameingResources, Store, Transaction, Channel, Membership, Transport, Member, ClusterListener等等。
由以上配置不難看出存在的一個(gè)問(wèn)題。如果我們想要對(duì)其中一個(gè)應(yīng)用程序的配置做一些修改,那么就必須重新啟動(dòng)tomcat,那樣勢(shì)必就會(huì)影響到另外兩個(gè)應(yīng)用程序的正常服務(wù)。因此以上配置是不適合線上使用的,
因此需要將其配置為多實(shí)例,每個(gè)實(shí)例只跑一個(gè)獨(dú)立的應(yīng)用程序,那樣我們應(yīng)用程序之間就不會(huì)在互相受到影響。
但是我們將面臨這樣一豎雹個(gè)問(wèn)題,80端口只能被一個(gè)HTTP/1.1 Connector監(jiān)聽(tīng),而三個(gè)tomcat實(shí)例則至少需要3個(gè)HTTP/1.1 Connector,這樣我們就
需要一個(gè)前端代理做分發(fā)處理,接收HTTP 80端口的請(qǐng)求,按域名通過(guò)每個(gè)tomcat實(shí)例的AJP/1.3 Connector傳遞請(qǐng)求
。而前端的代理選擇apache,基于這樣的思路,我們還可以做到tomcat的負(fù)載均衡,而且
apache會(huì)將接收的HTTP超文本傳輸報(bào)文重新封裝成二進(jìn)制格式通過(guò)AJP/1.3 協(xié)議傳遞給后端的tomcat處理
,在效率上余指帆也是有明顯的提升。
這會(huì)讓Tomcat啟動(dòng)一個(gè)server實(shí)例(即一個(gè)JVM),它監(jiān)聽(tīng)在8005端口以接收shutdown命令。各Server的定義不能使用同一個(gè)端口,這意味著如果在同一個(gè)物理機(jī)上啟動(dòng)了多個(gè)Server實(shí)例,必須配置它們使用不同的端口。這個(gè)端口的定義用于為管理員提供一個(gè)關(guān)閉此實(shí)例的便捷途徑,因此,管理員可以直接telnet至此端口使用SHUTDOWN命令關(guān)閉此實(shí)例。不過(guò),基于安全角度的考慮,這通常不允許遠(yuǎn)程進(jìn)行。
該元素代表整個(gè)容器,是Tomcat實(shí)例的頂層元素。由org.apache.catalina.Server接口來(lái)定義。它包含一個(gè)或多個(gè)元素。并且它不能做為任何元素的子元素。
Service主要用于關(guān)聯(lián)一個(gè)引擎和與此引擎相關(guān)的連接器,每個(gè)連接器通過(guò)一個(gè)特定的端口和協(xié)議接收入站請(qǐng)求交將其轉(zhuǎn)發(fā)至關(guān)聯(lián)的引擎進(jìn)行處理。因此,Service要包含一個(gè)引擎、一個(gè)或多個(gè)連接器。
該元素由org.apache.catalina.Service接口定義,它包含一個(gè)元素,以及一個(gè)或多個(gè),這些Connector元素共享用同一個(gè)Engine元素。
Engine是Servlet處理器的一個(gè)實(shí)逗備例,即servlet引擎,默認(rèn)為定義在server.xml中的Catalina。
每個(gè)Service元素只能有一個(gè)Engine元素。元素處理在同一個(gè)中所有元素接收到的客戶請(qǐng)求。由org.apahce.catalina.Engine接口定義。
位于Engine容器中用于接收請(qǐng)求并進(jìn)行相應(yīng)處理的主機(jī)或虛擬主機(jī)。
它由Host接口定義。一個(gè)Engine元素可以包含多個(gè)元素。每個(gè)的元素定義了一個(gè)虛擬主機(jī)。它包含了一個(gè)或多個(gè)Web應(yīng)用。
Context在某些意義上類似于apache中的路徑別名,一個(gè)Context定義用于標(biāo)識(shí)tomcat實(shí)例中的一個(gè)Web應(yīng)用程序。
它由Context接口定義。是使用最頻繁的元素。每個(gè)元素代表了運(yùn)行在虛擬主機(jī)上的單個(gè)Web應(yīng)用。一個(gè)可以包含多個(gè)元素。每個(gè)web應(yīng)用有唯一的一個(gè)相對(duì)應(yīng)的Context代表web應(yīng)用自身。servlet容器為之一個(gè)web應(yīng)用創(chuàng)建一個(gè) ServletContext對(duì)象。
由Connector接口定義。元素代表與客戶程序?qū)嶋H交互的組件,它負(fù)責(zé)接收客戶請(qǐng)求,以及向客戶返回響應(yīng)結(jié)果。
進(jìn)入Tomcat的請(qǐng)求可以根據(jù)Tomcat的工作模式分為如下兩類:
Tomcat應(yīng)該考慮工作情形并為相應(yīng)情形下的請(qǐng)求分別定義好需要的連接器才能正確接收來(lái)自于客戶端的請(qǐng)求。一個(gè)引擎可以有一個(gè)或多個(gè)連接器,以適應(yīng)多種請(qǐng)求方式。
定義連接器可以使用多種屬性,有些屬性也只適用于某特定的連接器類型。一般說(shuō)來(lái),常見(jiàn)于server.xml中的連接器類型通常有4種:
Connector元素共用屬性:
HttpConnector元素的屬性:
AJP Connector的屬性:
即一個(gè)service配置多個(gè)端口,項(xiàng)目可以通過(guò)多個(gè)端口訪問(wèn)。
修改tomcat-home\conf下的server.xml,在Service下配置多個(gè)即可。
在這個(gè)應(yīng)用里,可以用8080端口號(hào)訪問(wèn)服務(wù),也可以用8099端口號(hào)來(lái)訪問(wèn)服務(wù); 服務(wù)放置的路徑由host決定,上例中服務(wù)放在webapps下。
即配置多個(gè)service,每個(gè)service可以配置多個(gè)端口。修改tomcat-home\conf下的server.xml,添加多個(gè)Service即可。
注意:Service name、Engine name、appBase,端口號(hào)別忘了修改,以免重復(fù)。
以上三個(gè)service,發(fā)布的路徑不同,項(xiàng)目分別發(fā)布在webapps、webapps1、webapps2下,訪問(wèn)不同的項(xiàng)目的方法:
在$CATALINA_HOME/conf/server.xml配置文件中的Connetctor節(jié)點(diǎn),和連接數(shù)相關(guān)的參數(shù)配置和優(yōu)化。
Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示Tomcat可創(chuàng)建的更大的線程數(shù)。默認(rèn)值200。
可以根據(jù)機(jī)器的時(shí)期性能和內(nèi)存大小調(diào)整,一般可以在
。更大可以在800左右。
指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可以放到處理隊(duì)列中的請(qǐng)求數(shù),超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理。默認(rèn)值10。
Tomcat初始化時(shí)創(chuàng)建的線程數(shù)。默認(rèn)值4。
一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat就會(huì)關(guān)閉不再需要的socket線程。默認(rèn)值50。
是否反查域名,默認(rèn)值為true。
為了提高處理能力,應(yīng)設(shè)置為false
。
網(wǎng)絡(luò)連接超時(shí),默認(rèn)值20230,單位:毫秒。設(shè)置為0表示永不超時(shí),這樣設(shè)置有隱患的。
通??稍O(shè)置為30000毫秒
。
保持請(qǐng)求數(shù)量,默認(rèn)值100。
輸入流緩沖大小,默認(rèn)值2023 bytes。
壓縮傳輸,取值on/off/force,默認(rèn)值off。
其中和更大連接數(shù)相關(guān)的參數(shù)為maxThreads和acceptCount。
如果要加大并發(fā)連接數(shù),應(yīng)同時(shí)加大這兩個(gè)參數(shù)
。
web server允許的更大連接數(shù)還受制于操作系統(tǒng)的內(nèi)核參數(shù)設(shè)置
,通常Windows是2023個(gè)左右,Linux是1000個(gè)左右。
配置示例:
Tomcat默認(rèn)可以使用的內(nèi)存為128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下設(shè)置:
一般說(shuō)來(lái),你應(yīng)該使用物理內(nèi)存的 80% 作為堆大小。如果本機(jī)上有Apache服務(wù)器,可以先折算Apache需要的內(nèi)存,然后修改堆大小。
建議設(shè)置為70%;建議設(shè)置等于,這樣可以減少頻繁分配堆而降低性能。
在$CATALINA_HOME/conf/web.xml中,把listings參數(shù)設(shè)置成false即可,如下:
參考
linux怎么配置tomcat
方法/步驟 首先是到官網(wǎng)下載tomcat,選游租擇你需要的族野版本下載安裝即可,相信能搭建服務(wù)的對(duì)安裝肯定很熟了,不熟悉的同學(xué)自己百度或者google吧,網(wǎng)上有很多。我主要講一神穗兆下配置過(guò)程。 tomcat安裝好后首先要對(duì)它進(jìn)行配置文件的修改。
關(guān)于linux安裝版tomcat內(nèi)存設(shè)置的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營(yíng)銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
網(wǎng)頁(yè)題目:Linux安裝版Tomcat內(nèi)存優(yōu)化指南(linux安裝版tomcat內(nèi)存設(shè)置)
文章來(lái)源:http://m.fisionsoft.com.cn/article/djhossj.html


咨詢
建站咨詢
