黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 六道比較難回答的tomcat面試題及答案

六道比較難回答的tomcat面試題及答案

更新時間:2023-01-03 16:32:40 來源:動力節(jié)點 瀏覽1618次

已經(jīng)是新的一年了,很多人都開始臨時抱佛腳的準(zhǔn)備面試題,今天小編也準(zhǔn)備了這幾道關(guān)于Tomcat的核心面試及答案,看完后肯定會在你的就業(yè)面試道路上幫助很大:

tomcat面試題及答案

1、Tomcat的缺省端口是多少,怎么修改?

默認(rèn)端口為8080,可以通過在tomcat安裝包conf目錄下,service.xml中的Connector元素的port屬性來修改端口。

2、tomcat 有哪幾種Connector 運行模式(優(yōu)化)?

這三種模式的不同之處如下:

BIO:一個線程處理一個請求。缺點:并發(fā)量高時,線程數(shù)較多,浪費資源。Tomcat7版本或更低版本中,在Linux系統(tǒng)中默認(rèn)使用這種方式。

NIO:利用Java的異步IO處理,可以通過少量的線程處理大量的請求。tomcat8.0.x中默認(rèn)使用的是NIO。Tomcat7必須修改Connector配置來啟動:

APR:即Apache Portable Runtime,從操作系統(tǒng)層面解決io阻塞問題。Tomcat7或Tomcat8在Win7或以上的系統(tǒng)中啟動默認(rèn)使用這種方式。

3、Tomcat有幾種部署方式?

  • 利用Tomcat的自動部署:把web應(yīng)用拷貝到webapps目錄(生產(chǎn)環(huán)境不建議放在該目錄中)。Tomcat在啟動時會加載目錄下的應(yīng)用,并將編譯后的結(jié)果放入work目錄下。
  • 使用Manager App控制臺部署:在tomcat主頁點擊“Manager App” 進(jìn)入應(yīng)用管理控制臺,可以指定一個web應(yīng)用的路徑或war文件。
  • 修改conf/server.xml文件部署:在server.xml文件中,
  • 增加Context節(jié)點可以部署應(yīng)用。增加自定義的Web部署文件:在conf/Catalina/localhost/路徑下增加 xyz.xml文件,內(nèi)容是Context節(jié)點,可以部署應(yīng)用。

4、tomcat容器是如何創(chuàng)建servlet類實例?用到了什么原理?

  • 當(dāng)容器啟動時,會讀取在webapps目錄下所有的web應(yīng)用中的web.xml文件,然后對 xml文件進(jìn)行解析,并讀取servlet注冊信息。然后,將每個應(yīng)用中注冊的servlet類都進(jìn)行加載,并通過 反射的方式實例化。(有時候也是在第一次請求時實例化)
  • 在servlet注冊時加上1如果為正數(shù),則在一開始就實例化,如果不寫或為負(fù)數(shù),則第一次請求實例化。

5、tomcat 如何優(yōu)化?

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

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

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

  • 對于高并發(fā)情況下會有大量的運算,那么CPU的速度會直接影響到處理速度。
  • 內(nèi)存在大量數(shù)據(jù)處理的情況下,將會有較大的內(nèi)存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等參數(shù)對內(nèi)存不同功能塊進(jìn)行劃分。我們之前就遇到過內(nèi)存分配不足,導(dǎo)致虛擬機(jī)一直處于full GC,從而導(dǎo)致處理能力嚴(yán)重下降。
  • 硬盤主要問題就是讀寫性能,當(dāng)大量文件進(jìn)行讀寫時,磁盤極容易成為性能瓶頸。最好的辦法還是利用下面提到的緩存。利用緩存和壓縮
  • 對于靜態(tài)頁面最好是能夠緩存起來,這樣就不必每次從磁盤上讀。這里我們采用了Nginx作為緩存服務(wù)器,將圖片、css、js文件都進(jìn)行了緩存,有效地減少了后端tomcat的訪問。
  • 另外,為了能加快網(wǎng)絡(luò)傳輸速度,開啟gzip壓縮也是必不可少的。但考慮到tomcat已經(jīng)需要處理很多東西了,所以把這個壓縮的工作就交給前端的Nginx來完成。
  • 除了文本可以用gzip壓縮,其實很多圖片也可以用圖像處理工具預(yù)先進(jìn)行壓縮,找到一個平衡點可以讓畫質(zhì)損失很小而文件可以減小很多。曾經(jīng)我就見過一個圖片從300多kb壓縮到幾十kb,自己幾乎看不出來區(qū)別。采用集群

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

優(yōu)化線程數(shù)優(yōu)化

找到Connector port="8080" protocol="HTTP/1.1",增加maxThreads和acceptCount屬性(使acceptCount大于等于maxThreads),如下:

其中:

maxThreads:tomcat可用于請求處理的最大線程數(shù),默認(rèn)是200 minSpareThreads:tomcat初始線程數(shù),即最小空閑線程數(shù) maxSpareThreads:tomcat最大空閑線程數(shù),超過的會被關(guān)閉 acceptCount:當(dāng)所有可以使用的處理請求的線程數(shù)都被使用時,可以放到處理隊列中的請求數(shù),超過這個數(shù)的請求將不予處理.默認(rèn)100

使用線程池優(yōu)化

在server.xml中增加executor節(jié)點,然后配置connector的executor屬性,如下:

其中:

namePrefix:線程池中線程的命名前綴 maxThreads:線程池的最大線程數(shù) minSpareThreads:線程池的最小空閑線程數(shù) maxIdleTime:超過最小空閑線程數(shù)時,多的線程會等待這個時間長度,然后關(guān)閉 threadPriority:線程優(yōu)先級

注:當(dāng)tomcat并發(fā)用戶量大的時候,單個jvm進(jìn)程確實可能打開過多的文件句柄,這時會報java.net.SocketException:Too many open files錯誤。可使用下面步驟檢查:

ps -ef |grep tomcat 查看tomcat的進(jìn)程ID,記錄ID號,假設(shè)進(jìn)程ID為10001 lsof -p 10001|wc -l 查看當(dāng)前進(jìn)程id為10001的 文件操作數(shù) 使用命令:ulimit -a 查看每個用戶允許打開的最大文件數(shù)

啟動速度優(yōu)化

  • 刪除沒用的web應(yīng)用:因為tomcat啟動每次都會部署這些應(yīng)用。
  • 關(guān)閉WebSocket:websocket-api.jar和tomcat-websocket.jar。
  • 隨機(jī)數(shù)優(yōu)化:設(shè)置JVM參數(shù):-Djava.security.egd=file:/dev/./urandom。內(nèi)存優(yōu)化

因為tomcat啟動起來后就是一個java進(jìn)程,所以這塊可以參照J(rèn)VM部分的優(yōu)化思路。堆內(nèi)存相關(guān)參數(shù),比如說:

-Xms:虛擬機(jī)初始化時的最小堆內(nèi)存。

-Xmx:虛擬機(jī)可使用的最大堆內(nèi)存。-Xms與-Xmx設(shè)成一樣的值,避免JVM因為頻繁的GC導(dǎo)致性能大起大落

-XX:MaxNewSize:新生代占整個堆內(nèi)存的最大值。

另外還有方法區(qū)參數(shù)調(diào)整(注意:JDK版本)、垃圾收集器等優(yōu)化。JVM相關(guān)參數(shù)請看:手把手教你設(shè)置JVM調(diào)優(yōu)參數(shù)

6、熟悉tomcat的哪些配置?

Context(表示一個web應(yīng)用程序,通常為WAR文件,關(guān)于WAR的具體信息見servlet規(guī)范)標(biāo)簽。

docBase:該web應(yīng)用的文檔基準(zhǔn)目錄(Document Base,也稱為Context Root),或者是WAR文件的路徑。可以使絕對路徑,也可以使用相對于context所屬的Host的appBase路徑。

path:表示此web應(yīng)用程序的url的前綴,這樣請求的url為http://localhost:8080/path/****。

reloadable:這個屬性非常重要,如果為true,則tomcat會自動檢測應(yīng)用程序的/WEB-INF/lib和/WEB-INF/classes目錄的變化,自動裝載新的應(yīng)用程序,我們可以在不重啟tomcat的情況下改變應(yīng)用程序。

useNaming:如果希望Catalina為該web應(yīng)用使用一個JNDI InitialContext對象,設(shè)為true。該InitialialContext符合J2EE平臺的約定,缺省值為true。

workDir:Context提供的臨時目錄的路徑,用于servlet的臨時讀/寫。利用javax.servlet.context.tempdir屬性,servlet可以訪問該目錄。如果沒有指定,使用$CATALINA_HOME/work下一個合適的目錄。

swallowOutput:如果該值為true,System.out和System.err的輸出被重定向到web應(yīng)用的logger。如果沒有指定,缺省值為false

debug:與這個Engine關(guān)聯(lián)的Logger記錄的調(diào)試信息的詳細(xì)程度。數(shù)字越大,輸出越詳細(xì)。如果沒有指定,缺省為0。

host(表示一個虛擬主機(jī))標(biāo)簽。

name:指定主機(jī)名。

appBase:應(yīng)用程序基本目錄,即存放應(yīng)用程序的目錄。

unpackWARs:如果為true,則tomcat會自動將WAR文件解壓,否則不解壓,直接從WAR文件中運行應(yīng)用程序。

Logger(表示日志,調(diào)試和錯誤信息)標(biāo)簽。

className:指定logger使用的類名,此類必須實現(xiàn)org.apache.catalina.Logger接口。

prefix:指定log文件的前綴。

suffix:指定log文件的后綴。

timestamp:如果為true,則log文件名中要加入時間,如下例:localhost_log.2001-10-04.txt。

以上就是“六道比較難回答的tomcat面試題及答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 成人a毛片在线看免费全部播放 | 久久99精品久久久久久国产越南 | 人人看人人做 | 一个人在线看的免费视频 | 国产在线精品一区二区不卡 | 插菊综合网 | 天堂网在线观看视频 | 日韩欧美中 | 中文字幕在线一区 | 欧美视频在线免费 | 成人免费观看完整视频 | 这里只有精品99re在线 | 2020亚洲欧美日韩在线观看 | 波多野结衣在线观看网址 | av小说网站 | 国产人成精品 | 黄网站免费在线观看 | 久草一级片 | 色综合久久久久久888 | 国产高清一区二区三区免费视频 | 久久精品国产免费中文 | 欧美激情a∨在线视频播放 欧美激情二区 | 亚洲国产日韩欧美在线 | 亚洲黄色免费 | 国产成人咱精品视频免费网站 | 中文字幕欧美日韩久久 | 特级淫片aaaaa片毛片 | 成人高辣h视频一区二区在线观看 | 日韩欧美成人乱码一在线 | 亚洲欧美日本在线观看 | 久久天天操| 老湿机福利影院 | 色综合天天综合网看在线影院 | 中国黄色毛片 大片 | 操操日| 男人av的天堂 | 国产真实一区二区三区 | 男女羞羞的视频网站在线观看 | 久草视频在线首页 | 欧美成人免费午夜全 | 国产精品视频白浆免费视频 |