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

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


咨詢
建站咨詢
