1. 程式人生 > >Tomcat優化之配置執行緒池高併發連線

Tomcat優化之配置執行緒池高併發連線

原理:在使用和配置tomcat的執行緒池之前明白執行緒池的原理,類似於作業系統中的緩衝區的概念,它的流程如下:先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠 狀態,當客戶端有一個新請求時,就會喚醒執行緒池中的某一個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,執行緒又處於睡眠狀態。可能你也許會 問:為什麼要搞得這麼麻煩,如果每當客戶端有新的請求時,我就建立一個新的執行緒不就完了?這也許是個不錯的方法,因為它能使得你編寫程式碼相對容易一些,但 你卻忽略了一個重要的問題??效能!

 如果 為每個客戶端請求建立一個新執行緒的話,那耗費的CPU時間和記憶體將是驚人的,如果採用一個擁有200個執行緒的執行緒池,那將會節約大量的的系統資源,使得更 多的CPU時間和記憶體用來處理實際的商業應用,而不是頻繁的執行緒建立與銷燬。

使用執行緒池,用較少的執行緒處理較多的訪問,可以提高tomcat處理請求的能力。

1:配置executor屬性

開啟/conf/server.xml檔案,在Connector之前配置一個執行緒池(這個executor可以自己手動去掉註釋):

<Executor name="myThreadPool"
           namePrefix="catalina-exec-"
           maxThreads="250"
           maxIdleTime="60000"
           prestartminSpareThreads="true" 
           minSpareThreads="50"/> 

重要引數說明:

name:共享執行緒池的名字。這是Connector為了共享執行緒池要引用的名字,該名字必須唯一。預設值:None;

namePrefix:在JVM上,每個執行執行緒都可以有一個name 字串。這一屬性為執行緒池中每個執行緒的name字串設定了一個字首,Tomcat將把執行緒號追加到這一字首的後面。預設值:tomcat-exec-;

maxThreads:該執行緒池可以容納的最大執行緒數。預設值:200,一般建議設定500~ 800 ,要根據自己的硬體設施條件和實際業務需求而定。 

maxIdleTime:在Tomcat關閉一個空閒執行緒之前,允許空閒執行緒持續的時間(以毫秒為單位)。只有當前活躍的執行緒數大於minSpareThread的值,才會關閉空閒執行緒。預設值:60000(一分鐘)。

minSpareThreads:Tomcat應該始終開啟的最小不活躍執行緒數。預設值:25。Tomcat啟動初始化的執行緒數,在tomcat初始化的時候就初始化

2:配置Connector

<Connector executor="myThreadPool"  
           port="8080" protocol="HTTP/1.1"  
           connectionTimeout="20000"  
            redirectPort="8443"   
           minProcessors="5"  
           maxProcessors="75"  
           acceptCount="1000"/> 

重要引數說明:
executor:表示使用該引數值對應的執行緒池;

minProcessors:伺服器啟動時建立的處理請求的執行緒數;

maxProcessors:最大可以建立的處理請求的執行緒數;

acceptCount:指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理。

相關推薦

Tomcat優化配置執行併發連線

原理:在使用和配置tomcat的執行緒池之前明白執行緒池的原理,類似於作業系統中的緩衝區的概念,它的流程如下:先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠 狀態,當客戶端有一個新請求時,就會喚醒執行緒池中的某一個睡眠執行緒,讓它來處理客戶端的這個請求,當處理完這個請求後,

【本人禿頂程式設計師】Tomcat優化配置執行

←←←←←←←←←←←← 快,點關注! 簡介 執行緒池作為提高程式處理資料能力的一種方案,應用非常廣泛。大量的伺服器都或多或少的使用到了執行緒池技術,不管是用Java還是C++實現,執行緒池都有如下的特點: 執行緒池一般有三個重要引數: 最大執行緒數。在程式執行的任何時候

Tomcat優化配置執行

原文地址:https://bbs.aliyun.com/read/307481.html?spm=5176.bbsl239.0.0.nZJ2Kx&fpage=2 簡介執行緒池作為提高程式處理資料能力的一種方案,應用非常廣泛。大量的服務器都或多或少的使用到了執行緒池技

tomcat7優化配置執行

執行緒池指web請求負載的數量,使用執行緒池,可以用較少的執行緒處理較多的訪問,提高tomcat處理請求的能力 具體步驟如下: 在tomcat目錄下的conf中的server.xml中進行配置,一共

Tomcat優化實戰之一 執行優化 多看官方文件

Tomcat優化實戰之一 執行緒池的優化 加多人幹活 maxConnections受作業系統核心影響 openFiles 控制代碼 ulimit -a ulimit -a 命令檢視linux centos下的 1024預設 修改openFiles 伺服器的保護

從零開始學多執行自定義配置執行(七)

等待其他資源,可能會產生執行緒飢餓死鎖 線上程池中如果一個任務依賴於其它任務的執行,就可能產生死鎖.在一個單執行緒化的Executor中,提交兩個任務,任務二滯留在工作佇列中等待第一個任務完成,但是第一個任務不會完成,因為它在等待第二個任務的完成(需要第二個任務執行的結果進行運算),這就會發生死鎖. 在一個大

Tomcat(三)——Tomcat的Connector及執行配置

Connector引數配置 port,埠號。Tomcat預設埠號是8080。 address,配置Connector在監聽網路請求時監聽在哪一個地址上。在很多伺服器上,伺服器上的IP是不止一個的,會

Java併發程式設計的藝術九----執行

第一:降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。 第二:提高響應速度。當任務到達時,任務可以不需要等到執行緒建立就能立即執行。 第三:提高執行緒的可管理性。執行緒是稀缺資源,如果無限制地建立,不僅會消耗系統資源, 還會降低系統的穩定性,使用執行緒池可以進行統

【小家java】Java執行---ForkJoinPool執行的使用以及原理

相關閱讀 【小家java】java5新特性(簡述十大新特性) 重要一躍 【小家java】java6新特性(簡述十大新特性) 雞肋升級 【小家java】java7新特性(簡述八大新特性) 不溫不火 【小家java】java8新特性(簡述十大新特性) 飽受讚譽 【小家java】java9

muduo_base程式碼剖析ThreadPool執行

1. 執行緒池 執行緒池的問題本質上也是生產者消費者模型問題 生產者生產產品的過程,實際上就是由程式設計師向任務佇列中新增任務的過程(需要程式設計師控制),實現程式碼見下: 1. print函式是程式設計師自己手動定義的任務函式 2. run(Task

Java多執行-----執行的使用,原理以及舉例實現(三)(四):使用樣例及如何配置執行大小

三.使用示例   前面我們討論了關於執行緒池的實現原理,這一節我們來看一下它的具體使用: public class Test { public static void main(String[] args) { ThreadPoolExe

Java併發程式設計深入執行原理及實現

Java執行緒池在實際的應用開發中十分廣泛。雖然Java1.5之後在JUC包中提供了內建執行緒池可以拿來就用,但是這之前仍有許多老的應用和系統是需要程式設計師自己開發的。因此,基於執行緒池的需求背景、技術要求瞭解執行緒池原理和實現,一方面可以更為深刻理解Java多執行緒開發,有助於解決業務系統中因為執行緒問題

Java併發任務處理Executor執行

乾貨 import org.junit.After; import org.junit.Test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public c

JAVA多執行——常用執行

執行緒池 學習了執行緒池的基本原理後,可以理解執行緒池的型別控制,主要是通過中心池大小,和最大執行緒池大小,以及儲存工作任務的佇列決定。JDK中為我們封裝了常用的四種執行緒池。 在JDK幫助文件中,有如此一段話: “強烈建議程式設計師使用較為方便的Exec

執行併發程式設計基礎知識(上)

前言 幾乎所有的程式設計師都知道,現代作業系統進行資源分配的最小單元是程序,而作業系統進行運算排程的最小單元是執行緒,其實,在Linux中執行緒也可以看作是一種輕量級的程序,那麼執行緒是包含於程序之中的,是程序中實際的運作單位;同一程序中的多個執行緒共用同一塊

一步一步跟我學習lucene(6)---lucene索引優化執行建立索引

這兩天工作有點忙,部落格更新不及時,請大家見諒; 前面瞭解到lucene在索引建立的時候一個IndexWriter獲取到一個讀寫鎖,這樣勢在lucene建立大資料量的索引的時候,執行效率低下的問題; 磁碟空間大小,這個直接影響索引的建立,甚至會造成索引寫入提示完成,但是沒

spring 配置 執行並使用 springtest 進行測試

    在 applicationContext.xml 中配置spring執行緒池: <!-- 包路徑掃描 --> <context:component-scan base-package="spring.task"/>

JDK併發執行四(自定義ThreadFactory)

ThreadPoolExecutor的建構函式中,執行緒的生成有ThreadFactory生成,建構函式中的ThreadFactory預設為Eexecutors.defaultThreadFactory()。自定義ThreadFactory可以根治執行緒池究竟何時建立了多少執

Androidjava執行總結

執行緒池 Android培訓實戰教程裡面,耗時的網路操作,都會開子執行緒,在程式裡面直接開過多的執行緒會消耗過多的資源,在眾多的開源框架中也總能看到執行緒池的蹤影,所以執行緒池是必須要會把握的一個知識點; 執行緒執行機制 ·         開啟執行緒過多,會消耗cpu

Spring中配置執行ThreadPoolExecutor參考

<bean id="executorService" class="java.util.concurrent.ThreadPoolExecutor"> <constructor-