新聞中心
Tomcat是一種常用的Java Web服務(wù)器,能夠在Linux系統(tǒng)下高效地運(yùn)行各種Java Web應(yīng)用程序。在高并發(fā)的情況下,Tomcat啟動(dòng)多個(gè)線程可以提升系統(tǒng)的性能和吞吐量。本文將介紹Linux下Tomcat如何啟動(dòng)多線程的方法。

創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了成都網(wǎng)站建設(shè)、做網(wǎng)站服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。
一、Tomcat線程模型
Tomcat采用的是線程池模型,也就是說,它會(huì)一次性啟動(dòng)多條線程,這些線程會(huì)在服務(wù)器閑置時(shí)保持待命狀態(tài),以便能夠在接收客戶端請(qǐng)求時(shí)迅速響應(yīng)。而線程池的大小取決于硬件資源的配置和應(yīng)用程序的特性,通常情況下,線程數(shù)量越多,Tomcat的性能越好。
在Tomcat的線程池中,普通的Web請(qǐng)求將由Tomcat的HttpConnector來處理,而長連接或長輪詢的請(qǐng)求將通過Tomcat的AJAX Comet模塊來處理。另外,Tomcat還會(huì)在后臺(tái)啟動(dòng)一些線程用于回收內(nèi)存、監(jiān)控JVM等任務(wù)。
二、修改Tomcat的配置文件
要想在Linux系統(tǒng)下啟動(dòng)多線程,需要對(duì)Tomcat的配置文件進(jìn)行修改。該配置文件位于Tomcat安裝目錄的conf/server.xml文件中。默認(rèn)情況下,Tomcat的線程池設(shè)置如下:
namePrefix=”catalina-exec-“
maxThreads=”150″
minSpareThreads=”4″/>
根據(jù)上述代碼,Tomcat會(huì)創(chuàng)建一個(gè)名為“tomcatThreadPool”的線程池,其中maxThreads屬性設(shè)置更大線程數(shù)為150,minSpareThreads屬性設(shè)置最小保留線程數(shù)為4??梢愿鶕?jù)實(shí)際需求對(duì)這些屬性進(jìn)行修改。
例如,在一個(gè)高并發(fā)的Java Web應(yīng)用程序中,需要提高Tomcat的更大線程數(shù),可以將maxThreads設(shè)置為更大的數(shù)字。但是,要注意不要將線程數(shù)設(shè)置得過高,否則會(huì)造成系統(tǒng)崩潰或者性能下降。
另外,還可以通過修改Tomcat啟動(dòng)腳本來配置更多的系統(tǒng)參數(shù)。一般情況下,需要修改的系統(tǒng)參數(shù)包括內(nèi)存大小、線程數(shù)、日志輸出級(jí)別等等。
三、使用JVM參數(shù)控制線程數(shù)
另一種方法是使用JVM參數(shù)來控制Tomcat啟動(dòng)多少個(gè)線程。Unix/Linux系統(tǒng)下的Java虛擬機(jī)提供了一些命令行選項(xiàng),可以通過這些選項(xiàng)來控制JVM中線程的大小。下面是一些常用的選項(xiàng):
-Xms:設(shè)置JVM最小值。
-Xmx:設(shè)置JVM更大值。
-XX:PermSize:設(shè)置JVM對(duì)永久區(qū)的初始分配大小。
-XX:MaxPermSize:設(shè)置JVM對(duì)永久區(qū)的更大分配大小。
-XX:+UseConcMarkSweepGC:設(shè)置JVM使用Concurrent Mark Sweep垃圾收集器。
可根據(jù)實(shí)際需求修改上述參數(shù),進(jìn)而調(diào)整Tomcat的線程池大小。
四、結(jié)語
在高并發(fā)的情況下,啟動(dòng)多個(gè)線程可以大幅度提升Tomcat的性能和吞吐量。本文從Tomcat的線程模型、配置文件、JVM參數(shù)等方面為大家介紹了方法。如果你需要在Linux系統(tǒng)下搭建高性能的Java Web應(yīng)用程序,請(qǐng)一定要了解并掌握這些知識(shí)。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220tomcat的每個(gè)線程在干什么?
現(xiàn)象如下:剛啟動(dòng)后,java幾乎耗盡了所有的CPU,壓力大嘛。
幾分鐘后,CPU 100% idle, tomcat也不接受任何請(qǐng)求了,感覺就是tomcat死了。
ps -efL | grep java | wc -l 可以發(fā)現(xiàn)tomcat的線程池滿了,每個(gè)線程都在,就是不工作了。
google后發(fā)現(xiàn),有這種問題還不在少數(shù),具體原因也不盡相同,但根本的原因就一個(gè)線程發(fā)生了死鎖。 這巖凱配就好理解了,所有的線程都在等待某種資源,所以也就idle了孫散。
1、 ps -ef | grep java
得到j(luò)ava的pid
2、kill -QUIT 得到的pid
這個(gè)命令給java發(fā)送了一個(gè)信號(hào),tomcat會(huì)把每個(gè)線程的情況寫在tomcat的日志文件catalina.out中
這下你可以分析原因了。
我的問題解決了,線程在等待兩種資源,
1、 dbcp , 這是個(gè)數(shù)據(jù)庫連接池,資源有限,用完了就得等。
2、ibatis的一個(gè)東西,在老的版本中ibatis對(duì)數(shù)據(jù)庫資源也有控制 既然有兩種資源要爭用,就有可能會(huì)死鎖。
最后發(fā)現(xiàn),新版的ibatis(2.3.2)已沒有這個(gè)資源控制了,就是嘛,dbcp都有連接池了,ibatis就用粗指不著了。
工具類中設(shè)置靜態(tài)變量,當(dāng)訪問量過大時(shí),客戶端會(huì)等待超時(shí)嗎? 如何使用線程進(jìn)行tomcat服務(wù)器的定時(shí)重啟?
如果應(yīng)用系統(tǒng)的內(nèi)跡備搭存足夠,靜態(tài)變量不影響效率,實(shí)際上很多時(shí)候靜態(tài)變量是為了提高系統(tǒng)的效率和重復(fù)資源的使用,特別是多線程姿拿和很多用戶同時(shí)訪問的時(shí)候。tomcat可以用行命令滾滾重啟,手冊(cè)上有說明,跟線程沒關(guān)系。
關(guān)于linux tomcat 啟動(dòng)線程的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
本文名稱:Linux下Tomcat如何啟動(dòng)多線程?(linuxtomcat啟動(dòng)線程)
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/djecpcj.html


咨詢
建站咨詢
