亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Tomcat優(yōu)化筆記

Coding01 / 1252人閱讀

摘要:不同的應(yīng)用場(chǎng)景,不同的架構(gòu),不同的需求,都會(huì)對(duì)優(yōu)化設(shè)置有不同要求。在這里我所記述的只是我自己在一些應(yīng)用中所設(shè)置的優(yōu)化項(xiàng),以備不時(shí)之需,并不是放之四海而皆準(zhǔn)的準(zhǔn)則。為了消除這些警告,還需要根治。

一千個(gè)人眼中就有一千個(gè)哈姆雷特?!獋挝鞣街V語(yǔ)

關(guān)于Tomcat的優(yōu)化點(diǎn)之多,我估計(jì)沒(méi)有上萬(wàn),也有成千。不同的應(yīng)用場(chǎng)景,不同的架構(gòu),不同的需求,都會(huì)對(duì)優(yōu)化設(shè)置有不同要求。在這里我所記述的只是我自己在一些Tomcat應(yīng)用中所設(shè)置的優(yōu)化項(xiàng),以備不時(shí)之需,并不是放之四海而皆準(zhǔn)的準(zhǔn)則。

pom.xml

對(duì)于maven項(xiàng)目來(lái)說(shuō),pom.xml設(shè)置是整個(gè)設(shè)置的核心,如果pom.xml設(shè)置不當(dāng),雖然有時(shí)候也可以編譯運(yùn)行,但總是會(huì)出現(xiàn)一些令人討厭的警告。為了消除這些警告,還需要根治pom.xml。

重復(fù)依賴(lài)

首先要解決的是重復(fù)依賴(lài)問(wèn)題,有時(shí)候我們會(huì)在編譯項(xiàng)目時(shí)遇到下面的這樣的警告:

[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.qiban.supplier:saas-supplier:war:1.0-SNAPSHOT
[WARNING] "dependencies.dependency.(groupId:artifactId:type:classifier)" must be unique: commons-codec:commons-codec:jar -> duplicate declaration of version 1.9 @ line 264, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

解決的方法很簡(jiǎn)單:在pom.xml中搜索出現(xiàn)重復(fù)依賴(lài)的jar包名稱(chēng),你肯定會(huì)發(fā)現(xiàn)對(duì)于同一個(gè)jar包,重復(fù)引用了多次,也許版本相同,也許版本不同,只要?jiǎng)h除掉那些重復(fù)的就可以了。

maven編譯器版本

有時(shí)候會(huì)遇到下面這樣的錯(cuò)誤:

[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.qiban.supplier:saas-supplier:war:1.0-SNAPSHOT
[WARNING] "build.plugins.plugin.version" for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 297, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]

這意思是說(shuō)你沒(méi)有在pom.xml里指定maven的版本,在pom.xml里添加maven的版本就可以了:

    
        saas-supplier
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.5.1
                
                    1.8
                    1.8
                
            
        
    

重點(diǎn)是上面那個(gè)3.5.1。

jdom

有的時(shí)候會(huì)遇到一行簡(jiǎn)單的警告:

[WARNING] The artifact jdom:jdom:jar:1.1 has been relocated to org.jdom:jdom:jar:1.1

這個(gè)的意思是說(shuō)在你的pom.xml里,你需要把jdomgroupId改為org.jdom

       
            org.jdom
            jdom
            1.1
        
activemq-spring

下面這個(gè)警告不會(huì)在編譯時(shí)出現(xiàn),但是會(huì)在運(yùn)行時(shí)出現(xiàn),也非常惡心:

SLF4J: Class path contains multiple SLF4J bindings

我們需要把pom.xml里的activemq-all改成activemq-spring

        
            org.apache.activemq
            activemq-spring
            5.11.1
        

詳細(xì)解釋可以看我的這篇文章。

log4j.properties

終于改完了pom.xml,我們開(kāi)始處理log4j。

xmemcached

如果你使用了xmemcached,那么日志里會(huì)不斷地出現(xiàn)xmemcached的警告,而這些警告對(duì)我們來(lái)說(shuō)根本就不是警告,毫無(wú)意義,并且會(huì)掩蓋真正的錯(cuò)誤,所以我們通過(guò)修改log4j.properties文件屏蔽它:

# xmemcached
log4j.logger.com.google.code=OFF
log4j.logger.net.rubyeye.xmemcached=OFF

我這里比較野蠻粗暴地直接使用了OFF選項(xiàng),如果你不放心,可以改成ERROR選項(xiàng),效果是一樣的。

webapp名稱(chēng)+%c

如果你有多個(gè)webapp,為了準(zhǔn)確顯示到底是哪個(gè)webapp的哪個(gè)class報(bào)的錯(cuò),我們需要在log4j.properties文件里注明我們的webapp名稱(chēng),再加上一個(gè)%c符號(hào):

log4j.appender.STDOUT.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %-5p - activity - %c - %m%n

這樣下回再有任何錯(cuò)誤,我們可以第一時(shí)間迅速定位到到底是哪個(gè)webapp的哪個(gè)class出的錯(cuò)誤。

logrotate

如果我們不管不顧的話,Tomcat的日志文件幾乎會(huì)無(wú)限制增長(zhǎng),最終會(huì)耗盡我們的硬盤(pán)空間,所以我們需要用logrotate來(lái)限制它一下,在/etc/logrotate.d文件夾下創(chuàng)建一個(gè)文件tomcat

/opt/tomcat1/logs/catalina.out
/opt/tomcat2/logs/catalina.out
{
   copytruncate
   daily
   rotate 7
   compress
   missingok
   size 10M
}
setenv.sh

Tomcat不問(wèn)青紅皂白,上來(lái)就要占領(lǐng)我們主機(jī)整個(gè)物理內(nèi)存的四分之一,我們需要限制它的大小,寧可浪費(fèi)一些CPU和硬盤(pán)的時(shí)間去讓它不斷地垃圾回收,也不想讓它占用這么多的內(nèi)存,所以我們需要在/opt/tomcat/bin下建立一個(gè)setenv.sh文件,強(qiáng)制讓它最多占用1G內(nèi)存:

export CATALINA_OPTS="$CATALINA_OPTS -Xms512m"
export CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

這樣我們一臺(tái)16G內(nèi)存的主機(jī),可以同時(shí)運(yùn)行16個(gè)Tomcat,而不像以前,最多只能同時(shí)運(yùn)行4個(gè)Tomcat

jarsToSkip

Tomcat啟動(dòng)時(shí)會(huì)不斷地掃描所有.jar文件,并且報(bào)一些不知所謂的警告:

09-Dec-2017 20:03:14.289 FINE [localhost-startStop-1] org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan No TLD files were found in [file:/home/apache-tomcat-8.5.4/lib/tomcat-redis-session-manager-master-2.0.0.jar]. Consider adding the JAR to the tomcat.util.scan.StandardJarScanFilter.jarsToSkip property in CATALINA_BASE/conf/catalina.properties file.

直接在/opt/tomcat/conf/catalina.properties文件里把這一句話改成:

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=*.jar

這個(gè)世界終于清靜了,掃什么掃,有什么可掃的!

startStopThreads

當(dāng)你有多個(gè)webapp的時(shí)候,Tomcat缺省會(huì)啟完一個(gè)webapp再啟下一個(gè),這樣太慢了,不可忍受,我們?cè)?b>/opt/tomcat/conf/server.xml文件里把它的啟動(dòng)線程數(shù)直接干到20個(gè):

Dubbo

有時(shí)候Dubbo也會(huì)跳出來(lái)?yè)v亂,在每一個(gè)不同的webapp下的consumer.xml文件里指定file

每個(gè)webappfile名稱(chēng)各不相同,它們?cè)僖膊粫?huì)互相打架了。

結(jié)語(yǔ)

以上所述也不過(guò)只是冰山之一角,好記性不如爛筆頭,記錄下來(lái)作為以后每次優(yōu)化時(shí)的依據(jù),也許對(duì)遇到類(lèi)似問(wèn)題的你也略有啟發(fā)吧。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/77225.html

相關(guān)文章

  • Tomcat調(diào)優(yōu)筆記

    摘要:在利用收集了兩次的相關(guān)數(shù)據(jù),發(fā)現(xiàn)這和的存在關(guān)系,圖表如下在第一次的前期,動(dòng)作比較多,此時(shí)的吞吐量一直維持在比較低的水平。第二次幾乎沒(méi)有的動(dòng)作,此時(shí)的吞吐量一直維持在比較高的水平。 本文是在Tomcat調(diào)優(yōu)過(guò)程中得到的心得(會(huì)持續(xù)更新),相關(guān)環(huán)境: java version 1.8.0_131 Tomcat 8.5.14 Jmeter 3.1 Jmeter參數(shù): 300線程 100...

    nanchen2251 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<