參數名 | 描述 |
maxThreads | Tomcat線程池最多能起的線程數;默認值爲200;若是執行器與此鏈接器關聯,則此屬性將被忽略,由於鏈接器將使用執行器而不是內部線程池執行任務。tomcat 注意:若是一個執行器配置設置該屬性的任何值,只會被正確記錄但它將報告(例如經過JMX)爲-1明確表示不使用。多線程 |
maxConnections | Tomcat最多能併發處理的請求。當鏈接達到maxThreads後,新的鏈接會接收,但不會處理。額外的鏈接將一直阻塞在隊列中,直到鏈接數小於maxThreads。併發 注意:隊列的最大值是acceptCount。性能 默認值因鏈接器不一樣:NiO和NIO2默認是10000;對於APR /native,默認值是8192。spa 注意:若是置爲-1,即禁用maxThreads功能,鏈接數將再也不計數。線程 |
acceptCount | Tomcat維護最大的對列數;在隊列滿時,收到的任何請求都將被拒絕。默認值是100。 |
minSpareThreads | Tomcat初始化的線程池大小或者說Tomcat線程池最少會有這麼多線程。若是未指定,則使用10的默認值。若是執行器與此鏈接器關聯,則此屬性將被忽略,由於鏈接器將使用執行器而不是內部線程池執行任務。隊列 注意:若是一個執行器配置設置該屬性的任何值,只會正確記錄但它將報告(例如經過JMX)爲-1明確表示不使用。ci |
比較容易弄混的是maxThreads和maxConnections這兩個參數:io
maxThreads是指Tomcat線程池作多能起的線程數,而maxConnections則是Tomcat一瞬間作多可以處理的併發鏈接數。好比maxThreads=1000,maxConnections=800,假設某一瞬間的併發時1000,那麼最終Tomcat的線程數將會是800,即同時處理800個請求,剩餘200進入隊列「排隊」,若是acceptCount=100,那麼有100個請求會被拒掉。
注意:根據前面所說,只是併發那一瞬間Tomcat會起800個線程處理請求,可是穩定後,某一瞬間可能只有不多的線程處於RUNNABLE狀態,大部分線程是TIMED_WAITING,若是你的應用處理時間夠快的話。因此真正決定Tomcat最大可能達到的線程數是maxConnections這個參數和併發數,當併發數超過這個參數則請求會排隊,這時響應的快慢就看你的程序性能了。table