技術乾貨:Tomcat面試題彙總及答案

陝西優就業發表於2020-01-06

今天陝西優就業小編繼續給大家分享IT乾貨。希望能為大家提供幫助!

一、Tomcat 的預設埠是多少,怎麼修改?

  1)找到 Tomcat 目錄下的 conf 資料夾

  2)進入 conf 資料夾裡面找到 server.xml 檔案

  3)開啟 server.xml 檔案

  4)在 server.xml 檔案裡面找到下列資訊

  <1connector p=""

  redirectPort="8443" uriEncoding="utf-8"/>

  port="8080"改成你想要的埠

  二、tomcat 有哪幾種 Connector 執行模式(最佳化)?

  bio:傳統的 Java I/O 操作,同步且阻塞 IO。maxThreads=”150”//Tomcat 使用執行緒來處理接收的每個請求。這個值表示

  Tomcat 可建立的最大的執行緒數。預設值 200。可以根據機器的時期效能和記憶體大小調整,一般可以在 400-500。最大可以在 800 左右。

  minSpareThreads=”25”—Tomcat 初始化時建立的執行緒數。預設值 4。如果當前沒有空閒執行緒,且沒有超過 maxThreads,一次性建立的空閒執行緒數量。

  Tomcat 初始化時建立的執行緒數量也由此值設定。maxSpareThreads=”75”–一旦建立的執行緒超過這個值,Tomcat 就會關閉不再需要的 socket 執行緒。預設值 50。一旦建立的執行緒超過此數值,Tomcat 會關閉不再需要的執行緒。執行緒數可以大致上用 “同時線上人數每秒使用者操作次數系統平均操作時間” 來計算。

  acceptCount=”100”—-指定當所有可以使用的處理請求的執行緒數都被使用 時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理。預設值 10。如果當前可用執行緒數為 0,則將請求放入處理佇列中。這個值限定了請求佇列的大小,超過這個數值的請求將不予處理。connectionTimeout=”20000”–網路連線超時,預設值 20000,單位:毫秒。設定為 0 表示永不超時,這樣設定有隱患的。通常可設定為 30000 毫秒。

  nio:JDK1.4 開始支援,同步阻塞或同步非阻塞 IO。指定使用 NIO 模型來接受 HTTP 請求

  protocol=”org.apache.coyote.http11.Http11NioProtocol” 指定使用 NIO 模型來接受 HTTP 請求。預設是 BlockingIO,配置為 protocol=”HTTP/1.1” acceptorThreadCount=”2” 使用 NIO 模型時接收執行緒的數目

  aio(nio.2):JDK7 開始支援,非同步非阻塞 IO。

  apr:Tomcat 將以 JNI 的形式呼叫 Apache HTTP 伺服器的核心動態連結庫來處理檔案讀取或網路傳輸操作,從而大大地 提高 Tomcat 對靜態檔案的處理效能。

  三、Tomcat 有幾種部署方式?

  1)直接把 Web 專案放在 webapps 下,Tomcat 會自動將其部署

  2)在 server.xml 檔案上配置節點,設定相關的屬性即可

  3)透過 Catalina 來進行配置:進入到 conf\Catalina\localhost 檔案下,建立一個xml 檔案,該檔案的名字就是站點的名字。

  編寫 XML 的方式來進行設定。

  四、tomcat 容器是如何建立 servlet 類例項?用到了什麼原理?

  當容器啟動時,會讀取在 webapps 目錄下所有的 web 應用中的 web.xml 檔案,然後對 xml 檔案進行解析,並讀取 servlet 註冊資訊。然後,將每個應用中註冊的 servlet 類都進行載入, 並透過反射的方式例項化。

  (有時候也是在第一次請求時例項化)在 servlet 註冊時加上如果為正數,則在一開始就例項化,如果不寫或為負數,則第一次請求例項化。

  五、tomcat 如何最佳化?

  1、最佳化連線配置.這裡以 tomcat7 的引數配置為例,需要修改 conf/server.xml檔案,修改連線數,關閉客戶端 dns 查詢。引數解釋:

  URIEncoding=”UTF-8″:使得 tomcat 可以解析含有中文名的檔案的 url,真方便,不像 apache 裡還有搞個 mod_encoding,還要手工編譯maxSpareThreads : 如果空閒狀態的執行緒數多於設定的數目,則將這些執行緒中止,減少這個池中的執行緒總數。

  minSpareThreads : 最小備用執行緒數,tomcat 啟動時的初始化的執行緒數。

  enableLookups :這個功效和 Apache 中的 HostnameLookups 一樣,設為關閉。

  connectionTimeout : connectionTimeout 為網路連線超時時間毫秒數。

  maxThreads : maxThreads Tomcat 使用執行緒來處理接收的每個請求。這個值表示 Tomcat 可建立的最大的執行緒數,即最大併發數。

  acceptCount : acceptCount 是當執行緒數達到 maxThreads 後,後續請求會被放入一個等待佇列,這個 acceptCount 是這個佇列的大小,如果這個佇列也滿了,就直接 refuse connection maxProcessors 與 minProcessors :

  在 Java 中執行緒是程式執行時的路徑,是在一個程式中與其它控制執行緒無關的、能夠獨立執行的程式碼段。它們共享相同的地址空間。多執行緒幫助程式設計師寫出 CPU 最大利用率的高效程式,使空閒時間保持最低,從而接受更多的請求。

  通常 Windows 是 1000 個左右,Linux 是 2000 個左右。

推薦閱讀

http://blog.itpub.net/69902581/viewspace-2668444/程式設計師35歲不焦慮,該怎麼做?


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69902581/viewspace-2672020/,如需轉載,請註明出處,否則將追究法律責任。

相關文章