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

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


咨詢
建站咨詢
