關於Tomcat和Tomcat的面試問題

1、Tomcat的缺省是多少,怎麼修改

Tomcat的缺省端口號是8080.
修改Tomcat端口號:
1.找到Tomcat目錄下的conf文件夾
2.進入conf文件夾裏面找到server.xml文件
3.打開server.xml文件
4.在server.xml文件裏面找到下列信息
maxThreads=」150″ minSpareThreads=」25″ maxSpareThreads=」75″
enableLookups=」false」 redirectPort=」8443″ acceptCount=」100″
connectionTimeout=」20000″ disableUploadTimeout=」true」 />
5.把port=」8080″改爲port=」8888″,而且保存
6.啓動Tomcat,而且在IE瀏覽器裏面的地址欄輸入http://127.0.0.1:8888/

七、tomcat默認採用的BIO模型,在幾百併發下性能會有很嚴重的降低。tomcat自帶還有NIO的模型,另外也能夠調用APR的庫來實現操做系統級別控制。
  NIO模型是內置的,調用很方便,只須要將上面配置文件中protocol修改爲 org.apache.coyote.http11.Http11NioProtocol,重啓便可生效。以下面的參數配置,默認的是HTTP/1.1。
    <Connector port=」8080″   
               protocol=」org.apache.coyote.http11.Http11NioProtocol」  
               connectionTimeout=」20000″  
               redirectPort=」8443″   
               maxThreads=」500″   
               minSpareThreads=」20″  
               acceptCount=」100″ 
               disableUploadTimeout=」true」 
               enableLookups=」false」   
               URIEncoding=」UTF-8″ />

2、tomcat 如何優化?

 一、優化鏈接配置.這裏以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個左右。

 useURIValidationHack:

咱們來看一下tomcat中的一段源碼:

【security】

        if (connector.getUseURIValidationHack()) {

            String uri = validate(request.getRequestURI());

            if (uri == null) {

                res.setStatus(400);

                res.setMessage(「Invalid URI」);

                throw new IOException(「Invalid URI」);

            } else {

                req.requestURI().setString(uri);

                // Redoing the URI decoding

                req.decodedURI().duplicate(req.requestURI());

                req.getURLDecoder().convert(req.decodedURI(), true);

能夠看到若是把useURIValidationHack設成」false」,能夠減小它對一些url的沒必要要的檢查從而減省開銷。

 enableLookups=」false」 : 爲了消除DNS查詢對性能的影響咱們能夠關閉DNS查詢,方式是修改server.xml文件中的enableLookups參數值。

 disableUploadTimeout :相似於Apache中的keeyalive同樣

給Tomcat配置gzip壓縮(HTTP壓縮)功能

compression=」on」 compressionMinSize=」2048″

compressableMimeType=」text/html,text/xml,text/javascript,text/css,text/plain」

HTTP 壓縮能夠大大提升瀏覽網站的速度,它的原理是,在客戶端請求網頁後,從服務器端將網頁文件壓縮,再下載到客戶端,由客戶端的瀏覽器負責解壓縮並瀏覽。相對於普通的瀏覽過程HTML,CSS,Javascript , Text ,它能夠節省40%左右的流量。更爲重要的是,它能夠對動態生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率驚人。

1)compression=」on」 打開壓縮功能

2)compressionMinSize=」2048″ 啓用壓縮的輸出內容大小,這裏面默認爲2KB

3)noCompressionUserAgents=」gozilla, traviata」 對於如下的瀏覽器,不啓用壓縮

4)compressableMimeType=」text/html,text/xml」 壓縮類型

最後不要忘了把8443端口的地方也加上一樣的配置,由於若是咱們走https協議的話,咱們將會用到8443端口這個段的配置,對吧?

<!–enable tomcat ssl–>

    <Connector port=」8443″ protocol=」HTTP/1.1″

               URIEncoding=」UTF-8″  minSpareThreads=」25″ maxSpareThreads=」75″

          enableLookups=」false」 disableUploadTimeout=」true」 connectionTimeout=」20000″

          acceptCount=」300″  maxThreads=」300″ maxProcessors=」1000″ minProcessors=」5″

          useURIValidationHack=」false」

                    compression=」on」 compressionMinSize=」2048″

                    compressableMimeType=」text/html,text/xml,text/javascript,text/css,text/plain」

                SSLEnabled=」true」

           scheme=」https」 secure=」true」

           clientAuth=」false」 sslProtocol=」TLS」

           keystoreFile=」d:/tomcat2/conf/shnlap93.jks」 keystorePass=」aaaaaa」

      />

好了,全部的Tomcat優化的地方都加上了。

二、優化JDK 
Tomcat默承認以使用的內存爲128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增長以下設置: 
JAVA_OPTS=」‘$JAVA_OPTS」 -Xms[初始化內存大小] -Xmx[可使用的最大內存] 
或 
設置環境變量:export JAVA_OPTS=」」$JAVA_OPTS」 -Xms[初始化內存大小] -Xmx[可使用的最大內存]」 
通常說來,你應該使用物理內存的 80% 做爲堆大小。若是本機上有Apache服務器,能夠先折算Apache須要的內存,而後修改堆大小。建議設置爲70%;建議設置[[初始化內存大小]等於[可使用的最大內存],這樣能夠減小平凡分配堆而下降性能。 
本例使用加入環境變量的方式: 
# vi /etc/profile 
加入:export JAVA_OPTS=」」$JAVA_OPTS」 -Xms700 —Xmx700 
# source /etc/profile

【參數說明】

-Xms 是指設定程序啓動時佔用內存大小。通常來說,大點,程序會啓動的 快一點,可是也可能會致使機器暫時間變慢。

-Xmx 是指設定程序運行期間最大可佔用的內存大小。若是程序運行須要佔 用更多的內存,超出了這個設置值,就會拋出OutOfMemory 異常。

-Xss 是指設定每一個線程的堆棧大小。這個就要依據你的程序,看一個線程 大約須要佔用多少內存,可能會有多少線程同時運行等。

-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64 。

-XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。

3、tomcat 有那幾種Connector 運行模式?

tomcat的運行模式有3種.修改他們的運行模式.3種模式的運行是否成功,能夠看他的啓動控制檯,或者啓動日誌.或者登陸他們的默認頁面http://localhost:8080/查看其中的服務器狀態。

1)bio

默認的模式,性能很是低下,沒有通過任何優化處理和支持.

2)nio

利用java的異步io護理技術,no blocking IO技術.

想運行在該模式下,直接修改server.xml裏的Connector節點,修改protocol爲

 <Connector port=」80″ protocol=」org.apache.coyote.http11.Http11NioProtocol」 
    connectionTimeout=」20000″ 
    URIEncoding=」UTF-8″ 
    useBodyEncodingForURI=」true」 
    enableLookups=」false」 
    redirectPort=」8443″ />

啓動後,就能夠生效。

3)apr

安裝起來最困難,可是從操做系統級別來解決異步的IO問題,大幅度的提升性能.

必需要安裝apr和native,直接啓動就支持apr。下面的修改純屬多餘,僅供你們擴充知識,但仍然須要安裝apr和native

如nio修改模式,修改protocol爲org.apache.coyote.http11.Http11AprProtocol
相關文章
相關標籤/搜索