一臺(tái)tomcat服務(wù)器可以支持多少的并發(fā)?
Tomcat的最大并發(fā)數(shù)是可以配置的,實(shí)際運(yùn)用中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)量都有很大關(guān)系的。更好的硬件,更多的處理器都會(huì)使Tomcat支持更多的并發(fā)。
Tomcat默認(rèn)的HTTP實(shí)現(xiàn)是采用阻塞式的Socket通信,每個(gè)請(qǐng)求都需要?jiǎng)?chuàng)建一個(gè)線程處理,當(dāng)一個(gè)進(jìn)程有500個(gè)線程在跑的話,那性能已經(jīng)是很低很低了。Tomcat 默認(rèn)配置的最大請(qǐng)求數(shù)是150,也就是說同時(shí)支持150個(gè)并發(fā)。具體能承載多少并發(fā),需要看硬件的配置,CPU 越多性能越高,分配給JVM的內(nèi)存越多性能也就越高,但也會(huì)加重GC的負(fù)擔(dān)。當(dāng)某個(gè)應(yīng)用擁有 250 個(gè)以上并發(fā)的時(shí)候,應(yīng)考慮應(yīng)用服務(wù)器的集群。操作系統(tǒng)對(duì)于進(jìn)程中的線程數(shù)有一定的限制:
Windows 每個(gè)進(jìn)程中的線程數(shù)不允許超過 2000
Linux 每個(gè)進(jìn)程中的線程數(shù)不允許超過 1000
在Java中每開啟一個(gè)線程需要耗用1MB的JVM內(nèi)存空間用于作為線程棧之用,此處也應(yīng)考慮。