Tomcat虛擬主機配置
Tomcat配置和啟動
tomcat的線程配置
首先,這和tomcat的使用的IO模式有關
關于Java IO模式、以及IO處理的線程模型等基礎的通信框架的知識,是Java程序員的重要、必備的內功,具體請參見尼恩編著的《Netty、Zookeeper、Redis高并發實戰》一書,這里不做過多的贅述。
其次,也和tomcat的配置參數有關
尤其是以下三個配置項:maxConnections、maxThreads、acceptCount。
Tomcat的maxConnections、maxThreads、acceptCount三大配置,分別表示最大連接數,最大線程數、最大的等待數,可以通過application.yml配置文件來改變這個三個值,一個標準的示例如下:
tomcat中maxConnections、maxThreads、acceptCount的具體含義是什么呢?參考官方文檔,對三者的含義說明如下:
官方文檔的說明為:當所有的請求處理線程都在使用時,所能接收的連接請求的隊列的最大長度。當隊列已滿時,任何的連接請求都將被拒絕。accept-count的默認值為100。
詳細的來說:當調用HTTP請求數達到tomcat的最大線程數時,還有新的HTTP請求到來,這時tomcat會將該請求放在等待隊列中,這個acceptCount就是指能夠接受的最大等待數,默認100。如果等待隊列也被放滿了,這個時候再來新的請求就會被tomcat拒絕(connection refud)。
每一次HTTP請求到達Web服務,tomcat都會創建一個線程來處理該請求,那么最大線程數決定了Web服務容器可以同時處理多少個請求。maxThreads默認200,肯定建議增加。但是,增加線程是有成本的,更多的線程,不僅僅會帶來更多的線程上下文切換成本,而且意味著帶來更多的內存消耗。JVM中默認情況下在創建新線程時會分配大小為1M的線程棧,所以,更多的線程異味著需要更多的內存。線程數的經驗值為:1核2g內存為200,線程數經驗值200;4核8g內存,線程數經驗值800。
官方文檔的說明為:
這個參數是指在同一時間,tomcat能夠接受的最大連接數。對于Java的阻塞式BIO,默認值是maxthreads的值;如果在BIO模式使用定制的Executor執行器,默認值將是執行器中maxthreads的值。對于Java 新的NIO模式,maxConnections 默認值是10000。
對于windows上APR/native IO模式,maxConnections默認值為8192,這是出于性能原因,如果配置的值不是1024的倍數,maxConnections 的實際值將減少到1024的最大倍數。
如果設置為-1,則禁用maxconnections功能,表示不限制tomcat容器的連接數。
maxConnections和accept-count的關系為:當連接數達到最大值maxConnections后,系統會繼續接收連接,但不會超過acceptCount的值。
用一個形象的比喻,通俗易懂的解釋一下tomcat的最大線程數(maxThreads)、最大等待數(acceptCount)和最大連接數(maxConnections)三者之間的關系。
我們可以把tomcat比做一個火鍋店,流程是取號、入座、叫服務員,可以做一下三個形象的類比:
(1)acceptCount 最大等待數
可以類比為火鍋店的排號處能夠容納排號的最大數量;排號的數量不是無限制的,火鍋店的排號到了一定數據量之后,服務往往會說:已經客滿。
(2)maxConnections 最大連接數
可以類比為火鍋店的大堂的餐桌數量,也就是可以就餐的桌數。如果所有的桌子都已經坐滿,則表示餐廳已滿,已經達到了服務的數量上線,不能再有顧客進入餐廳了。
(3)maxThreads:最大線程數
可以類比為廚師的個數。每一個廚師,在同一時刻,只能給一張餐桌炒菜,就像極了JVM中的一條線程。
(1)取號:如果maxConnections連接數沒有滿,就不需要取號,因為還有空余的餐桌,直接被大堂服務員領上餐桌,點菜就餐即可。如果 maxConnections 連接數滿了,但是取號人數沒有達到 acceptCount,則取號成功。如果取號人數已達到acceptCount,則拿號失敗,會得到Tomcat的Connection refud connect 的回復信息。
(2)上桌:如果有餐桌空出來了,表示maxConnections連接數沒有滿,排隊的人,可以進入大堂上桌就餐。
(3)就餐:就餐需要廚師炒菜。廚師的數量,比顧客的數量,肯定會少一些。一個廚師一定需要給多張餐桌炒菜,如果就餐的人越多,廚師也會忙不過來。這時候就可以增加廚師,一增加到上限maxThreads的值,如果還是不夠,只能是拖慢每一張餐桌的上菜速度,這種情況,就是大家常見的“上一道菜吃光了,下一道菜還沒有上”尷尬場景。
如何配置Tomcat服務器環境
一、安裝JDK和Tomcat
1,安裝JDK:直接運行jdk-7-windows-i586.exe可執行程序,默認安裝即可。
備注:路徑可以其他盤符,不建議路徑包含中文名及特殊符號。
2、安裝Tomcat:直接解壓縮下載文件“apache-tomcat-7.0.33-windows-x86.zip”到C盤下。安裝路徑建議修改為:c: omcat。
備注:如下載的是可執行文件,雙擊運行,默認安裝即可。
二、配置JDK環境變量(在步驟查看如何配置環境變量)
1,新建變量名:JAVA_HOME,變量值:C:Program FilesJavajdk1.7.0
2,打開PATH,添加變量值:%JAVA_HOME%in;%JAVA_HOME%jrein
3,新建變量名:CLASSPATH,變量值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar
備注:
1,.表示當前路徑,%JAVA_HOME%就是引用前面指定的JAVA_HOME;
2,JAVA_HOME指明JDK安裝路徑,此路徑下包括lib,bin,jre等文件夾,tomcat,eclip等的運行都需要依靠此變量。
3,PATH使得系統可以在任何路徑下識別java命令。
4,CLASSPATH為java加載類(class or lib)路徑,只有類在classpath中,java命令才能識別。
三、測試JDK
在CMD命令下輸入javac,java,javadoc命令:出現圖示界面,表示安裝成功。
四、配置Tomcat環境變量
1,新建變量名:CATALINA_BASE,變量值:C: omcat
2,新建變量名:CATALINA_HOME,變量值:C: omcat
3,打開PATH,添加變量值:%CATALINA_HOME%lib;%CATALINA_HOME%in
五、啟動Tomcat服務
方法三種:
1,方法一:直接進入tomcat的bin目錄中點擊startup.bat啟動服務,出現如下對話框,表明服務啟動成功,stutdown.bat為關閉服務。
2,方法二:在CMD命令下輸入命令:startup,出現如下對話框,表明服務啟動成功。
3,方法三:右鍵點擊桌面上的“我的電腦”->“管理”->“服務和應用程序”->“服務”,找到“Apache Tomcat”服務,右鍵點擊該服務,選擇“屬性”,將“啟動類型”由“手動”改成“自動”。
六、測試Tomcat
打開瀏覽器,在地址欄中輸入http://localhost:8080回車,如果看到Tomcat自帶的一個JSP頁面,說明你的JDK和Tomcat已搭建成功。
注意事項
1,JAVA_HOME中的路徑不能用分號結尾,如C:Program FilesJavajdk1.7.0。
2,CATALINA_BASE,CATALINA_HOME,TOMCAT_HOME中的路徑不能以“”結尾。
3,JAVA_HOME的路徑一定不要寫成了JRE的路徑。
4,在環境變量中修改添加變量時,一定要注意分號、空格,是否有多余的字母。作者就是因為path路徑中多了一個字母,怎么都配置不成功。如果配置不成功,一定要反復檢查。
以上錯誤,非常容易出現錯誤:CATALINA_HOME或是JAVA_HOME沒有配置好。如錯誤提示“The CATALINA_HOME environment variable is not defined correctly”
項目部署方式
一、靜態部署
1、直接將web項目文件件拷貝到webapps 目錄中
Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啟動時,會加載所有這個目錄下的應用。所以可以將JSP程序打包成一個war包放在目錄下,服務器會自動解開這個war包,并在這個目錄下生成一個同名的文件夾。一個war包就是有特性格式的jar包,它是將一個web程序的所有內容進行壓縮得到。具體如何打包,可以使用許多開發工具的IDE環境,如Eclip等。也可以用cmd命令:jar -cvf mywar.war myweb
webapps這個默認的應用目錄也是可以改變。打開Tomcat的conf目錄下的rver.xml文件,找到下面內容:
<Host name="localhost" appBa="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="fal" xmlNamespaceAware="fal">
將appBa修改即可。
2、在rver.xml中指定
在Tomcat的配置文件中,一個Web應用就是一個特定的Context,可以通過在rver.xml中新建Context里部署一個JSP應用程序。打開rver.xml文件,在Host標簽內建一個Context,內容如下。
在tomcat中的conf目錄中,在rver.xml中的,<host/>節點中添加:
<Contextpath="/hello"docBa="D: workspacehelloWebRoot"debug="0"privileged="true">
< /Context>
或者
<Contextpath="/myapp"reloadable="true"docBa="D:myapp"workDir="D:myappwork"/>
或者
<Contextpath="/sms4"docBa="D:workspacesms4WebRoot"/>
說明:
path是虛擬路徑;
docBa是應用程序的物理路徑;
workDir是這個應用的工作目錄,存放運行時生成的與這個應用相關的文件;
debug則是設定debug level, 0表示提供最少的信息,9表示提供最多的信息
privileged設置為true的時候,才允許Tomcat的Web應用使用容器內的Servlet
reloadable如果為true,則tomcat會自動檢測應用程序的/WEB-INF/lib和/WEB-INF/class目錄的變化,自動裝載新的應用程序,可以在不重起tomcat的情況下改變應用程序,實現熱部署
antiResourceLocking和antiJARLocking 熱部署是需要配置的參數,默認fal避免更新了某個webapp,有時候Tomcat并不能把舊的webapp完全刪除,通常會留下WEB-INF/lib下的某個jar包,必須關閉Tomcat才能刪除,這就導致自動部署失敗。設置為true,Tomcat在運行對應的webapp時,會把相應的源文件和jar文件復制到一個臨時目錄里。
3、創建一個Context文件
在conf目錄中,新建Catalina\localhost目錄,在該目錄中新建一個xml文件,名字不可以隨意取,要和path后的那個名字一致,按照下邊這個path的配置,xml的名字應該就應該是hello(hello.xml),該xml文件的內容為:
<Context path="/hello" docBa="E:workspacehelloWebRoot" debug="0" privileged="true"></Context>
tomcat自帶例子如下:
<Context docBa="${catalina.home}/rver/webapps/host-manager"
privileged="true" antiResourceLocking="fal" antiJARLocking="fal">
</Context>
這個例子是tomcat自帶的,編輯的內容實際上和第二種方式是一樣的,其中這xml文件名字就是訪問路徑,這樣可以隱藏應用的真實名字。
4、注意:
刪除一個Web應用同時也要刪除webapps下相應的文件夾和rver.xml中相應的Context,還要將Tomcat的confcatalinalocalhost目錄下相應的xml文件刪除,否則Tomcat仍會去配置并加載。。。
二 動態部署
登陸tomcat管理控制臺:http://localhost:8080/,輸入用戶名和密碼后便可管理應用并動態發布。
在Context Path(option):中輸入/yourwebname,這代表你的應用的訪問地址。
XML Configration file URL中要指定一個xml文件,比如我們在F:下建立一個hmcx.xml文件,內容如下:<Context reloadable="fal" />其中docBa不用寫了,因為在下一個文本框中填入。或者更簡單點,這個文本框什么都不填,在WAR or Directory URL:中鍵入F:hmcx即可,然后點擊Deploy按鈕,上面就可以看到了web應用程序,名字就Context Path(option):中的名字。
如果部署.war文件還有更加簡單的方式,下面還有個Select WAR file uploae點擊瀏覽選擇.war文件,然后點擊Deploy也可以。
怎么配置tomcat
首先,下載一個 Tomcat 放在你的硬盤上,例如,下載一個 Tomcat 6.x 放在 E: 盤
第一種方法:在 Servers 窗口配置 Tomcat
1、在 Servers 窗口中的空白處點右鍵 >> Configure Server Connector 打開配置窗口
2、在新窗口左邊的導航中依層次選中 MyEclip >> Servers >> Tomcat >> Tomcat 6.x
3、在右邊點擊 Tomcat home directory 那一行的 Browr 按鈕,找到你下載的 Tomcat 所在的文件夾,點OK
4、將面板上邊的 Disable 改為 Enable ,再點擊 OK,你就會在你的Servers窗口中看到你的Tomcat了
第二種方法:如果你的 MyEclip 中沒有 Servers窗口
1、點擊菜單欄 Window >> Preferences >> MyEclip >> Servers >> Tomcat >> Tomcat 6.x
2、剩下的跟一種一樣
3、配置完成后點擊 Window >> Show View >> Servers 可以調出Servers窗口
注釋:配置好Tomcat后,新建一個WebProject,在Servers窗口空白處點右鍵 >> Add Deployment... 將項目部署進Tomcat
對著Tomcat點右鍵 >> Run Server 即可運行項目
Tomcat使用線程池配置高并發連接
1:配置executor屬性
打開/conf/rver.xml文件,在Connector之前配置一個線程池:
重要參數說明:name :共享線程池的名字。這是Connector為了共享線程池要引用的名字,該名字必須唯一。默認值:None; namePrefix :在JVM上,每個運行線程都可以有一個name 字符串。這一屬性為線程池中每個線程的name字符串設置了一個前綴,Tomcat將把線程號追加到這一前綴的后面。默認值:tomcat-exec-; maxThreads :該線程池可以容納的最大線程數。默認值:200; maxIdleTime :在Tomcat關閉一個空閑線程之前,允許空閑線程持續的時間(以毫秒為單位)。只有當前活躍的線程數大于minSpareThread的值,才會關閉空閑線程。默認值:60000(一分鐘)。 minSpareThreads :Tomcat應該始終打開的最小不活躍線程數。默認值:25。
2:配置Connector
重要參數說明:executor :表示使用該參數值對應的線程池; minProcessors :服務器啟動時創建的處理請求的線程數; maxProcessors :最大可以創建的處理請求的線程數; acceptCount :指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
一.Tomcat內存優化
Tomcat內存優化主要是對 tomcat 啟動參數優化,我們可以在 tomcat 的啟動腳本 catalina.sh 中設置JAVA_OPTS 參數。
1.JAVA_OPTS參數說明
現公司服務器內存一般都可以加到最大2G ,所以可以采取以下配置:
在cygwin=fal前添加
配置完成后可重啟Tomcat ,通過以下命令進行查看配置是否生效:
首先查看Tomcat 進程號:
result
我們可以看到Tomcat 進程號是27698 。
查看是否配置生效:
能在輸出的信息中找到Heap Configuration中看到MaxHeapSize 等參數已經生效。
二.Tomcat并發優化
1.Tomcat連接相關參數
在Tomcat 配置文件 rver.xml 中的 配置中
1.參數說明
minProcessors :最小空閑連接線程數,用于提高系統處理性能,默認值為 10 maxProcessors :最大連接線程數,即:并發處理的最大請求數,默認值為 75 acceptCount :允許的最大連接數,應大于等于 maxProcessors ,默認值為 100 enableLookups :是否反查域名,取值為: true 或 fal 。為了提高處理能力,應設置為 fal connectionTimeout :網絡連接超時,單位:毫秒。設置為 0 表示永不超時,這樣設置有隱患的。通常可設置為 30000 毫秒。其中和最大連接數相關的參數為maxProcessors 和 acceptCount 。如果要加大并發連接數,應同時加大這兩個參數。web rver允許的最大連接數還受制于操作系統的內核參數設置,通常 Windows 是 2000 個左右, Linux是 1000 個左右。
2.Tomcat中的配置示例
2.調整連接器connector的并發處理能力
1.參數說明
maxThreads :客戶請求最大線程數 minSpareThreads :Tomcat初始化時創建的 socket 線程數 maxSpareThreads :Tomcat連接器的最大空閑 socket 線程數 enableLookups :若設為true, 則支持域名解析,可把 ip 地址解析為主機名 redirectPort :在需要基于安全通道的場合,把客戶請求轉發到基于SSL 的 redirectPort 端口 acceptAccount :監聽端口隊列最大數,滿了之后客戶請求會被拒絕(不能小于maxSpareThreads ) connectionTimeout :連接超時 minProcessors :服務器創建時的最小處理線程數 maxProcessors :服務器同時最大處理線程數 URIEncoding :URL統一編碼
2.Tomcat中的配置示例
3.Tomcat緩存優化
1.參數說明
compression :打開壓縮功能 compressionMinSize :啟用壓縮的輸出內容大小,這里面默認為2KB compressableMimeType :壓縮類型 connectionTimeout :定義建立客戶連接超時的時間. 如果為 -1, 表示不限制建立客戶連接的時間
2.Tomcat中的配置示例
4.參考配置
1.舊有的配置
參考網絡對服務器做過如下配置,拿出來分享下:
后來發現在訪問量達到3 百萬多的時候出現性能瓶頸。
2.更改后的配置
本文發布于:2023-02-28 20:28:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167767754287200.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:tomcat 配置(tomcat配置文件).doc
本文 PDF 下載地址:tomcat 配置(tomcat配置文件).pdf
| 留言與評論(共有 0 條評論) |