新聞中心
當在Tomcat的webapps文件夾中部署大量wat資源包的時候會因為內存不足而無法成功部署,這時候我們需要修改Tomcat內存設置,下面為大家詳細講解一下Tomcat修改內存具體方法。

創(chuàng)新互聯(lián)公司堅信:善待客戶,將會成為終身客戶。我們能堅持多年,是因為我們一直可值得信賴。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十載網站建設經驗創(chuàng)新互聯(lián)公司是成都老牌網站營銷服務商,為您提供網站制作、成都網站設計、網站設計、H5開發(fā)、網站制作、品牌網站制作、成都小程序開發(fā)服務,給眾多知名企業(yè)提供過好品質的建站服務。
一、配置
Tomcat/conf/server.xml修改配置
"8080" protocol=
"org.apache.coyote.http11.Http11NioProtocol" redirectPort=
"8443" URIEncoding=
"UTF-8" minSpareThreads=
"25" maxSpareThreads=
"300" maxThreads=
"500" acceptCount=
"500" connectionTimeout=
"30000" enableLookups=
"false"/>
二、參數說明
maxIdleTime:最大空閑時間,超過這個空閑時間,且線程數大于minSpareThreads的,都會被回收,默認值1分鐘(60000ms);
minSpareThreads:最小空閑線程數,任何情況都會存活的線程數,即便超過了最大空閑時間,也不會被回收,默認值4;
maxSpareThreads:最大空閑線程數,在最大空閑時間(maxIdleTime)內活躍過,此時空閑,當空閑時間大于maxIdleTime則被回收,小則繼續(xù)存活,等待被調度,默認值50;
maxThreads:最大線程數,大并發(fā)請求時,tomcat能創(chuàng)建來處理請求的最大線程數,超過則放入請求隊列中進行排隊,默認值為200;
acceptCount:當最大線程數(maxThreads)被使用完時,可以放入請求隊列排隊個數,超過這個數返回connection refused(請求被拒絕),一般設置和max
Threads一樣,不過這個具體需要根據自己的應用實際訪問峰值和平均值來權衡,默認值為100;
connectionTimeout:網絡連接超時,假設設置為0表示永不超時,這樣設置隱患巨大,通??稍O置為30000ms,默認60000ms。
Windows Tomcat允許每個進程maxThreads(最大線程數)2000
Linux Tomcat允許每個進程maxThreads(最大線程數)1000
Tomcat修改內存配置Tomcat修改內存配置
圖解線程池原理
Tomcat修改內存配置Tomcat修改內存配置
請看下面三種情況
情況1:接受一個請求,此時tomcat起動的線程數沒有到達maxThreads,tomcat會起動一個線程來處理此請求。
情況2:接受一個請求,此時tomcat起動的線程數已經到達maxThreads,tomcat會把此請求放入等待隊列,等待空閑線程。
情況3:接受一個請求,此時tomcat起動的線程數已經到達maxThreads,等待隊列中的請求個數也達到了acceptCount,此時tomcat會直接拒絕此次請求,返回connection refused
maxThreads如何配置
一般的服務器操作都包括量方面:1計算(主要消耗cpu),2等待(io、數據庫等)
第一種極端情況,如果我們的操作是純粹的計算,那么系統(tǒng)響應時間的主要限制就是cpu的運算能力,此時maxThreads應該盡量設的小,降低同一時間內爭搶cpu的線程個數,可以提高計算效率,提高系統(tǒng)的整體處理能力。
第二種極端情況,如果我們的操作純粹是IO或者數據庫,那么響應時間的主要限制就變?yōu)榈却獠抠Y源,此時maxThreads應該盡量設的大,這樣才能提高同時處理請求的個數,從而提高系統(tǒng)整體的處理能力。此情況下因為tomcat同時處理的請求量會比較大,所以需要關注一下tomcat的虛擬機內存設置和linux的open file限制。
我在測試時遇到一個問題,maxThreads我設置的比較大比如3000,當服務的線程數大到一定程度時,一般是2000出頭,單次請求的響應時間就會急劇的增加,百思不得其解這是為什么,四處尋求答案無果,最后我總結的原因可能是cpu在線程切換時消耗的時間隨著線程數量的增加越來越大,cpu把大多數時間都用來在這2000多個線程直接切換上了,當然cpu就沒有時間來處理我們的程序了。以前一直簡單的認為多線程=高效率。。其實多線程本身并不能提高cpu效率,線程過多反而會降低cpu效率。當cpu核心數
現實應用中,我們的操作都會包含以上兩種類型(計算、等待),所以maxThreads的配置并沒有一個最優(yōu)值,一定要根據具體情況來配置。最好的做法是:在不斷測試的基礎上,不斷調整、優(yōu)化,才能得到最合理的配置。
acceptCount的配置,我一般是設置的跟maxThreads一樣大,這個值應該是主要根據應用的訪問峰值與平均值來權衡配置的。
如果設的較小,可以保證接受的請求較快相應,但是超出的請求可能就直接被拒絕
網頁標題:Tomcat內存設置具體方法
網頁URL:http://www.dlmjj.cn/article/cdjgeoj.html


咨詢
建站咨詢
