首頁(yè)技術(shù)文章正文

Java面試題Tomcat的優(yōu)化經(jīng)驗(yàn)

更新時(shí)間:2017-12-29 來(lái)源:黑馬程序員 瀏覽量:

Tomcat作為Web服務(wù)器,它的處理性能直接關(guān)系到用戶體驗(yàn),下面是幾種常見(jiàn)的優(yōu)化措施:

一、掉對(duì)web.xml的監(jiān)視,把jsp提前編輯成Servlet。有富余物理內(nèi)存的情況,加大tomcat使用的jvm的內(nèi)存

二、服務(wù)器資源

服務(wù)器所能提供CPU、內(nèi)存、硬盤的性能對(duì)處理能力有決定性影響。

(1) 對(duì)于高并發(fā)情況下會(huì)有大量的運(yùn)算,那么CPU的速度會(huì)直接影響到處理速度。

(2) 內(nèi)存在大量數(shù)據(jù)處理的情況下,將會(huì)有較大的內(nèi)存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等參數(shù)對(duì)內(nèi)存不同功能塊進(jìn)行劃分。我們之前就遇到過(guò)內(nèi)存分配不足,導(dǎo)致虛擬機(jī)一直處于full GC,從而導(dǎo)致處理能力嚴(yán)重下降。

(3) 硬盤主要問(wèn)題就是讀寫性能,當(dāng)大量文件進(jìn)行讀寫時(shí),磁盤極容易成為性能瓶頸。最好的辦法還是利用下面提到的緩存。

三、利用緩存和壓縮

對(duì)于靜態(tài)頁(yè)面最好是能夠緩存起來(lái),這樣就不必每次從磁盤上讀。這里我們采用了Nginx作為緩存服務(wù)器,將圖片、css、js文件都進(jìn)行了緩存,有效的減少了后端tomcat的訪問(wèn)。

另外,為了能加快網(wǎng)絡(luò)傳輸速度,開(kāi)啟gzip壓縮也是必不可少的。但考慮到tomcat已經(jīng)需要處理很多東西了,所以把這個(gè)壓縮的工作就交給前端的Nginx來(lái)完成。

除了文本可以用gzip壓縮,其實(shí)很多圖片也可以用圖像處理工具預(yù)先進(jìn)行壓縮,找到一個(gè)平衡點(diǎn)可以讓畫質(zhì)損失很小而文件可以減小很多。曾經(jīng)我就見(jiàn)過(guò)一個(gè)圖片從300多kb壓縮到幾十kb,自己幾乎看不出來(lái)區(qū)別。

四、采用集群

單個(gè)服務(wù)器性能總是有限的,最好的辦法自然是實(shí)現(xiàn)橫向擴(kuò)展,那么組建tomcat集群是有效提升性能的手段。我們還是采用了Nginx來(lái)作為請(qǐng)求分流的服務(wù)器,后端多個(gè)tomcat共享session來(lái)協(xié)同工作。可以參考之前寫的《利用nginx+tomcat+memcached組建web服務(wù)器負(fù)載均衡》。

五、.優(yōu)化tomcat參數(shù)

這里以tomcat7的參數(shù)配置為例,需要修改conf/server.xml文件,主要是優(yōu)化連接配置,關(guān)閉客戶端dns查詢。

1.<connector port="8080"

2. protocol="org.apache.coyote.http11.Http11NioProtocol"

3. connectionTimeout="20000"

4. redirectPort="8443"

5. maxThreads="500"

6. minSpareThreads="20"

7. acceptCount="100"

8. disableUploadTimeout="true"

9. enableLookups="false"

10. URIEncoding="UTF-8" />


本文版權(quán)歸黑馬程序員JavaEE學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!

作者:黑馬程序員JavaEE培訓(xùn)學(xué)院

首發(fā):http://java.itheima.com/

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!