tomcat7關鍵配置和執行緒

2021-07-25 11:19:39 字數 2349 閱讀 4815

官方文件

配置檔案conf/server.xml

redirectport="8443" />沒有指定executor,則使用internal executor,使用的是jdk的執行緒池。本文討論internal executor。

maxthreads– 預設200,最大執行緒數,為執行緒池最大大小(threadpoolexecutor的maximumpoolsize)

maxconnections– 最大連線數,預設為maxthreads

acceptcount– 預設100,監聽socket的 backlog。

minsparethreads– 預設min(10,maxthreads) ,等同於threadpoolexecutor的corepoolsize

maxkeepaliverequests– 預設100,一條長連線服務的http請求最大數目(超過了關閉之),-1表示不受數目影響。

connectiontimeout– 預設60000ms,accept乙個連線後,等uri的最長時間。

keepalivetimeout– 預設為connectiontimeout,乙個連線等待下乙個http請求到來的最長時間(過期關閉該連線)

**為:jioendpoint$acceptor.run\

執行緒名為:http-bio-監聽埠-acceptor-0

關鍵邏輯

public

void

run()

}

注:執行緒池使用的隊列為taskqueue extends linkedblockingqueue,其過載了offer方法。所以執行緒池的行為與jdk裡的稍有不同:連線數小於minsparethreads,來乙個連線建個執行緒;minsparethreads<=連線數分析:accept了maxconnections個連線後,1. 如果有新連線過來,則進入監聽套接字的backlog; 2.如果maxconnections>maxthreads,那麼maxconnections-maxthreads個連線進入執行緒池的佇列裡。

分析:nginx反向**到tomcat時,出現過這麼個情況:nginx部分日誌顯示上游響應時間很長,但是tomcat access log顯示處理時間都很短,這是為什麼呢? 乙個可能的原因是socket連線數滿了(並且每個長連線服務100個http後關閉,才處理新連線),新連線進入backlog,nginx的時間表現為backlog呆的時間+執行緒池佇列呆的時間+處理時間即accesslog裡的時間,而tomcat access日誌裡的時間為請求接收直到響應傳送完畢的時間。

conf/server.xml檔案裡,

"org.apache.catalina.valves.accesslogvalve" directory="logs"

prefix="localhost_access_log." suffix=".txt"

pattern="%h

%l%u

%t "%r" %s

%b%d" />

%d為毫秒,即為access log裡的時間

執行緒池在在abstractendpoint中建立。

abstractendpoint

|jioendpoint

工作執行緒**:jioendpoint$socketprocessor.run() \

執行緒名:http-bio-埠號-exec-

關鍵邏輯

public

void

run() finally

}

從單個執行緒來看:服務乙個http請求後,將socket放到執行緒池,自己再去任務佇列裡取任務。 這種方式的好處是 連線數多於執行緒數時,所有連線都公平的輪詢得到處理;缺點是socket任務不斷的入隊出隊在頻率極高下也會是個瓶勁。

conf/server.xml檔案裡

port="8005"

shutdown="shutdown">

server>

接收shutdown 之類的命令

Tomcat6和Tomcat7配置SSL通訊的比較

在專案開發過程中,嚐嚐會遇到tomcat需要ssl通訊的需求。尤其是在需要安全web應用時,需要https協議的通訊。由於tomcat預設情況下沒有提供ssl通訊設定,因此必須明白如何在tomcat下配置ssl。更糟糕的是,tomcat的不同版本,其ssl配置有所不同。所以,本文將講述如何在tomc...

Tomcat7配置雙向SSL

根證書 1.建立ca工作目錄 mkdir ca cd ca 2.生成ca私鑰 openssl genrsa out ca key.pem 1024 3.生成待簽名證書 openssl req new out ca req.csr key ca key.pem 即為ca根證書,可將其下發到客戶端,匯入...

tomcat7 配置專案路徑

在 tomcat home conf catalina localhost 目錄下新增xml配置資訊即可讓tomcat自動找到專案存放位置。如在e projects web practice 下有乙個myeclipse下建立的名為basestationinfo的web專案。配置步驟 在 tomcat...