<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    關(guān)于Tomcat和Tomcat的面試問(wèn)題

    http://www.jfox.info/guan-yu-Tomcat-he-Tomcat-de-mian-shi-wen-ti 
    http://www.jfox.info/guan-yu-Tomcat-he-Tomcat-de-mian-shi-wen-ti

    關(guān)于Tomcat和Tomcat的面試問(wèn)題

    一、Tomcat的缺省是多少,怎么修改

    Tomcat的缺省端口號(hào)是8080.
    修改Tomcat端口號(hào):
    1.找到Tomcat目錄下的conf文件夾
    2.進(jìn)入conf文件夾里面找到server.xml文件
    3.打開(kāi)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.啟動(dòng)Tomcat,并且在IE瀏覽器里面的地址欄輸入http://127.0.0.1:8888/

    7、tomcat默認(rèn)采用的BIO模型,在幾百并發(fā)下性能會(huì)有很?chē)?yán)重的下降。tomcat自帶還有NIO的模型,另外也可以調(diào)用APR的庫(kù)來(lái)實(shí)現(xiàn)操作系統(tǒng)級(jí)別控制。
      NIO模型是內(nèi)置的,調(diào)用很方便,只需要將上面配置文件中protocol修改成 org.apache.coyote.http11.Http11NioProtocol,重啟即可生效。如下面的參數(shù)配置,默認(rèn)的是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″ />

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

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

    參數(shù)解釋:

     URIEncoding=”UTF-8″ :使得tomcat可以解析含有中文名的文件的url,真方便,不像apache里還有搞個(gè)mod_encoding,還要手工編譯

     maxSpareThreads : 如果空閑狀態(tài)的線程數(shù)多于設(shè)置的數(shù)目,則將這些線程中止,減少這個(gè)池中的線程總數(shù)。

     minSpareThreads : 最小備用線程數(shù),tomcat啟動(dòng)時(shí)的初始化的線程數(shù)。

     enableLookups : 這個(gè)功效和Apache中的HostnameLookups一樣,設(shè)為關(guān)閉。

     connectionTimeout : connectionTimeout為網(wǎng)絡(luò)連接超時(shí)時(shí)間毫秒數(shù)。

     maxThreads : maxThreads Tomcat使用線程來(lái)處理接收的每個(gè)請(qǐng)求。這個(gè)值表示Tomcat可創(chuàng)建的最大的線程數(shù),即最大并發(fā)數(shù)。

     acceptCount : acceptCount是當(dāng)線程數(shù)達(dá)到maxThreads后,后續(xù)請(qǐng)求會(huì)被放入一個(gè)等待隊(duì)列,這個(gè)acceptCount是這個(gè)隊(duì)列的大小,如果這個(gè)隊(duì)列也滿了,就直接refuse connection

     maxProcessors與minProcessors : 在 Java中線程是程序運(yùn)行時(shí)的路徑,是在一個(gè)程序中與其它控制線程無(wú)關(guān)的、能夠獨(dú)立運(yùn)行的代碼段。它們共享相同的地址空間。多線程幫助程序員寫(xiě)出CPU最 大利用率的高效程序,使空閑時(shí)間保持最低,從而接受更多的請(qǐng)求。

    通常Windows是1000個(gè)左右,Linux是2000個(gè)左右。

     useURIValidationHack:

    我們來(lái)看一下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設(shè)成”false”,可以減少它對(duì)一些url的不必要的檢查從而減省開(kāi)銷。

     enableLookups=”false” : 為了消除DNS查詢對(duì)性能的影響我們可以關(guān)閉DNS查詢,方式是修改server.xml文件中的enableLookups參數(shù)值。

     disableUploadTimeout :類似于Apache中的keeyalive一樣

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

    compression=”on” compressionMinSize=”2048″

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

    HTTP 壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,在客戶端請(qǐng)求網(wǎng)頁(yè)后,從服務(wù)器端將網(wǎng)頁(yè)文件壓縮,再下載到客戶端,由客戶端的瀏覽器負(fù)責(zé)解壓縮并瀏覽。相對(duì)于普通的瀏覽過(guò)程HTML,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是,它可以對(duì)動(dòng)態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁(yè)也能進(jìn)行壓縮,壓縮效率驚人。

    1)compression=”on” 打開(kāi)壓縮功能

    2)compressionMinSize=”2048″ 啟用壓縮的輸出內(nèi)容大小,這里面默認(rèn)為2KB

    3)noCompressionUserAgents=”gozilla, traviata” 對(duì)于以下的瀏覽器,不啟用壓縮

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

    最后不要忘了把8443端口的地方也加上同樣的配置,因?yàn)槿绻覀冏遠(yuǎn)ttps協(xié)議的話,我們將會(huì)用到8443端口這個(gè)段的配置,對(duì)吧?

    <!–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優(yōu)化的地方都加上了。

    2、優(yōu)化JDK
    Tomcat默認(rèn)可以使用的內(nèi)存為128MB,Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件$CATALINA_HOME/bin/catalina.sh的前面,增加如下設(shè)置:
    JAVA_OPTS=”‘$JAVA_OPTS” -Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]

    設(shè)置環(huán)境變量:export JAVA_OPTS=””$JAVA_OPTS” -Xms[初始化內(nèi)存大小] -Xmx[可以使用的最大內(nèi)存]”
    一般說(shuō)來(lái),你應(yīng)該使用物理內(nèi)存的 80% 作為堆大小。如果本機(jī)上有Apache服務(wù)器,可以先折算Apache需要的內(nèi)存,然后修改堆大小。建議設(shè)置為70%;建議設(shè)置[[初始化內(nèi)存大小]等于[可以使用的最大內(nèi)存],這樣可以減少平凡分配堆而降低性能。
    本例使用加入環(huán)境變量的方式:
    # vi /etc/profile
    加入:export JAVA_OPTS=””$JAVA_OPTS” -Xms700 —Xmx700
    # source /etc/profile

    【參數(shù)說(shuō)明】

    -Xms 是指設(shè)定程序啟動(dòng)時(shí)占用內(nèi)存大小。一般來(lái)講,大點(diǎn),程序會(huì)啟動(dòng)的 快一點(diǎn),但是也可能會(huì)導(dǎo)致機(jī)器暫時(shí)間變慢。

    -Xmx 是指設(shè)定程序運(yùn)行期間最大可占用的內(nèi)存大小。如果程序運(yùn)行需要占 用更多的內(nèi)存,超出了這個(gè)設(shè)置值,就會(huì)拋出OutOfMemory 異常。

    -Xss 是指設(shè)定每個(gè)線程的堆棧大小。這個(gè)就要依據(jù)你的程序,看一個(gè)線程 大約需要占用多少內(nèi)存,可能會(huì)有多少線程同時(shí)運(yùn)行等。

    -XX:PermSize設(shè)置非堆內(nèi)存初始值,默認(rèn)是物理內(nèi)存的1/64 。

    -XX:MaxPermSize設(shè)置最大非堆內(nèi)存的大小,默認(rèn)是物理內(nèi)存的1/4。

    三、tomcat 有那幾種Connector 運(yùn)行模式?

    tomcat的運(yùn)行模式有3種.修改他們的運(yùn)行模式.3種模式的運(yùn)行是否成功,可以看他的啟動(dòng)控制臺(tái),或者啟動(dòng)日志.或者登錄他們的默認(rèn)頁(yè)面http://localhost:8080/查看其中的服務(wù)器狀態(tài)。

    1)bio

    默認(rèn)的模式,性能非常低下,沒(méi)有經(jīng)過(guò)任何優(yōu)化處理和支持.

    2)nio

    利用java的異步io護(hù)理技術(shù),no blocking IO技術(shù).

    想運(yùn)行在該模式下,直接修改server.xml里的Connector節(jié)點(diǎn),修改protocol為

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

    啟動(dòng)后,就可以生效。

    3)apr

    安裝起來(lái)最困難,但是從操作系統(tǒng)級(jí)別來(lái)解決異步的IO問(wèn)題,大幅度的提高性能.

    必須要安裝apr和native,直接啟動(dòng)就支持apr。下面的修改純屬多余,僅供大家擴(kuò)充知識(shí),但仍然需要安裝apr和native

    如nio修改模式,修改protocol為org.apache.coyote.http11.Http11AprProtocol

    posted on 2016-06-19 10:31 youngturk 閱讀(407) 評(píng)論(0)  編輯  收藏 所屬分類: 筆試題

    <2016年6月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結(jié)構(gòu)
    4 口語(yǔ)英語(yǔ)

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    EJB學(xué)習(xí)

    Flex學(xué)習(xí)

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 成人免费777777被爆出| 麻豆va在线精品免费播放| 亚洲人成色77777在线观看| 亚洲成a∨人片在无码2023| 乱爱性全过程免费视频| 久久久精品午夜免费不卡| 中文字幕免费高清视频| 无码少妇一区二区浪潮免费| 免费人成在线观看播放国产| 久久久久亚洲AV成人网人人软件| 久久精品国产精品亚洲艾| 亚洲丝袜中文字幕| 免费国产黄网站在线看| 国产精成人品日日拍夜夜免费| 亚洲免费视频一区二区三区| 日本亚洲视频在线| 亚洲一区二区三区亚瑟| 污视频网站免费在线观看| 一个人免费日韩不卡视频| 毛片免费视频播放| 亚洲日韩人妻第一页| 18亚洲男同志videos网站| 国产偷国产偷亚洲清高APP| 免费无码作爱视频| 成人网站免费观看| 在线精品亚洲一区二区小说| 久久精品国产亚洲AV忘忧草18 | 亚洲三区在线观看无套内射| 亚洲日本乱码一区二区在线二产线| 黄色大片免费网站| 亚洲视频在线免费看| 亚洲国产精品无码久久九九| 亚洲永久中文字幕在线| 日韩毛片一区视频免费| 国产成人精品免费视频大| AV在线播放日韩亚洲欧| 激情五月亚洲色图| 成人性生交大片免费看中文| 日本一道一区二区免费看| 亚洲五月六月丁香激情| 黄色一级视频免费观看|