Tomcat

關於Tomcat和Tomcat的面試問題

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

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/css

七、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″ />html

2、tomcat 如何優化?java

一、優化鏈接配置.這裏以tomcat7的參數配置爲例,須要修改conf/server.xml文件,修改鏈接數,關閉客戶端dns查詢。程序員

參數解釋:面試

URIEncoding=」UTF-8″ :使得tomcat能夠解析含有中文名的文件的url,真方便,不像apache裏還有搞個mod_encoding,還要手工編譯apache

maxSpareThreads : 若是空閒狀態的線程數多於設置的數目,則將這些線程停止,減小這個池中的線程總數。瀏覽器

minSpareThreads : 最小備用線程數,tomcat啓動時的初始化的線程數。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

轉載於:https://www.cnblogs.com/qq809306794/p/Tomcat.html