tomcat設(shè)置線程并發(fā)數(shù) tomcat能支持多少線程并發(fā)?
tomcat能支持多少線程并發(fā)?可配置的最大并發(fā)Tomcat數(shù)。在實(shí)際應(yīng)用中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)有很大關(guān)系。更好的硬件和更多的處理器將使Tomcat支持更多的并發(fā)性。Tomcat的默認(rèn)HT
tomcat能支持多少線程并發(fā)?
可配置的最大并發(fā)Tomcat數(shù)。在實(shí)際應(yīng)用中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)有很大關(guān)系。更好的硬件和更多的處理器將使Tomcat支持更多的并發(fā)性。
Tomcat的默認(rèn)HTTP實(shí)現(xiàn)是使用阻塞套接字通信。每個請求都需要創(chuàng)建一個線程進(jìn)行處理。當(dāng)一個進(jìn)程有500個線程運(yùn)行時,性能非常低。默認(rèn)情況下,Tomcat支持150個并發(fā)請求??梢猿休d多少并發(fā)取決于硬件配置。cpu越多,性能就越高,分配給JVM的內(nèi)存越多,性能就越高,但這也會增加GC的負(fù)擔(dān)。當(dāng)一個應(yīng)用程序有超過250個并發(fā)應(yīng)用程序時,應(yīng)該考慮應(yīng)用服務(wù)器集群。
操作系統(tǒng)對一個進(jìn)程的線程數(shù)有一定的限制:
windows的每個進(jìn)程的線程數(shù)不允許超過2000
Linux的每個進(jìn)程的線程數(shù)不允許超過1000
在Java中,每個線程需要消耗1MB的JVM內(nèi)存空間才能用作一個線程堆棧,這里也應(yīng)該考慮。
怎么知道當(dāng)前線程用了多少堆棧?
解決方案
1:您可以使用線程.currentThread(). getstacktrace()返回的數(shù)組的stacktraceelements表示程序的當(dāng)前堆棧跟蹤。解決方案
2:線程.currentThread(). Getstacktrace(),如果您不關(guān)心堆棧的第一個元素是什么。新建可丟棄()。Getstacktrace()將為當(dāng)前方法問題定義一個位置。解決方法
3:我很蠢,線程.currentThread(). Getstacktrace()解決方案
如何動態(tài)察看多線程程序堆棧使用情況?
這只需要在編寫代碼時編寫一個線程管理,然后通過線程管理調(diào)用多線程的用法。