1.tomcat如何配置熱部署
預設就是
1
<code><</code><code>host</code> <code>appbase="webapps" autodeploy="true" name="localhost" unpackwars="true"></code>
如果要實作ide修改代碼的自動部署,可以使用第三方工具
<a href="http://www.zeroturnaround.com/jrebel/" target="_blank">http://www.zeroturnaround.com/jrebel/</a>
1、解壓縮包
2、執行java -jar jrebel-setup.jar
3、會彈出一個安裝界面安裝
4、在myeclipse中配置,找到伺服器(如tomcat)的配置頁面,在tomcat的jdk配置頁面的optional java vm arguments輸入框中加如下參數:
-noverify -javaagent:d:\dev\jrebel\jrebel.jar -drebel.dirs=d:\dev\apache-tomcat-6.0.20\webapps\nmr
第一個路徑是jar包的絕對路徑,第二個位址是說想讓哪個目錄下的類更改後不重新開機服務。
如果optional java vm arguments輸入框中有其他參數,用空格隔開。
5、釋出項目,就能在控制台看到效果。
類就可以改變之後不用重新開機tomcat。
目前流行的伺服器都支援。詳細看官方網站。
2.配置web項目的虛拟目錄
配置之前,web項目檔案夾裡必須建立個檔案夾:web-inf,此檔案夾裡必須有個web.xml的檔案。這些都可以直接在tomcat/webapps/root/裡複制過來,放到自己的web項目中即可。
如果不配置,則需将web項目的檔案夾放在tomcat/webapps/下,通路路徑為:http://localhost:8080/web項目檔案夾名稱
如果web項目放在其他盤符,則在tomcat目錄/conf/檔案夾下:編輯server.xml文檔,
在文檔的末尾處,添加:<context path="/nala" docbase="e:\www\nala"></context>,如圖所示

3.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】
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<code>if</code> <code>(connector.getuseurivalidationhack()) {</code>
<code>string uri = validate(request.getrequesturi());</code>
<code>if</code> <code>(uri == </code><code>null</code><code>) {</code>
<code>res.setstatus(</code><code>400</code><code>);</code>
<code>res.setmessage(“invalid uri”);</code>
<code>throw</code> <code>new</code> <code>ioexception(“invalid uri”);</code>
<code>} </code><code>else</code> <code>{</code>
<code>req.requesturi().setstring(uri);</code>
<code>// redoing the uri decoding</code>
<code>req.decodeduri().duplicate(req.requesturi());</code>
<code>req.geturldecoder().convert(req.decodeduri(), </code><code>true</code><code>);</code>
<code>}</code>
可以看到如果把useurivalidationhack設成”false”,可以減少它對一些url的不必要的檢查進而減省開銷。
enablelookups=”false” : 為了消除dns查詢對性能的影響我們可以關閉dns查詢,方式是修改server.xml檔案中的enablelookups參數值。
disableuploadtimeout :類似于apache中的keeyalive一樣
給tomcat配置gzip壓縮(http壓縮)功能
<code>compression=”on” compressionminsize=”</code><code>2048</code><code>″</code>
<code>compressablemimetype=”text/html,text/xml,text/javascript,text/css,text/plain”</code>
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端口這個段的配置,對吧?
<code><!–enable tomcat ssl–></code>
<code><</code><code>connector</code> <code>port=”8443″ protocol=”http/1.1″</code>
<code>uriencoding=”utf-8″ minsparethreads=”25″ maxsparethreads=”75″</code>
<code>enablelookups=”false” disableuploadtimeout=”true” connectiontimeout=”20000″</code>
<code>acceptcount=”300″ maxthreads=”300″ maxprocessors=”1000″ minprocessors=”5″</code>
<code>useurivalidationhack=”false”</code>
<code>compression=”on” compressionminsize=”2048″</code>
<code>sslenabled=”true”</code>
<code>scheme=”https” secure=”true”</code>
<code>clientauth=”false” sslprotocol=”tls”</code>
<code>keystorefile=”d:/tomcat2/conf/shnlap93.jks” keystorepass=”aaaaaa”</code>
<code>/></code>
好了,所有的tomcat優化的地方都加上了。
tomcat預設可以使用的記憶體為128mb,windows下,在檔案{tomcat_home}/bin/catalina.bat,unix下,在檔案catalinahome/bin/catalina.sh的前面,增加如下設定:javaopts=”‘catalinahome/bin/catalina.sh的前面,增加如下設定:javaopts=”‘java_opts” -xms[初始化記憶體大小] -xmx[可以使用的最大記憶體]
或
設定環境變量:export java_opts=””javaopts”−xms[初始化記憶體大小]−xmx[可以使用的最大記憶體]”一般說來,你應該使用實體記憶體的80javaopts”−xms[初始化記憶體大小]−xmx[可以使用的最大記憶體]”一般說來,你應該使用實體記憶體的80java_opts” -xms700 —xmx700
# source /etc/profile
【參數說明】
-xms 是指設定程式啟動時占用記憶體大小。一般來講,大點,程式會啟動的 快一點,但是也可能會導緻機器暫時間變慢。
-xmx 是指設定程式運作期間最大可占用的記憶體大小。如果程式運作需要占 用更多的記憶體,超出了這個設定值,就會抛出outofmemory 異常。
-xss 是指設定每個線程的堆棧大小。這個就要依據你的程式,看一個線程 大約需要占用多少記憶體,可能會有多少線程同時運作等。
-xx:permsize設定非堆記憶體初始值,預設是實體記憶體的1/64 。
-xx:maxpermsize設定最大非堆記憶體的大小,預設是實體記憶體的1/4。
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