簡體   English   中英

了解Tomcat連接池設置

[英]Understanding the Tomcat Connection Pool settings

我想知道我對Tomcat連接池生命周期的理解是否正確。

例如,我有以下設置:

<Resource name="jdbc/appname" auth="Container"
type="javax.sql.DataSource" maxActive="100" 
maxIdle="30" maxWait="1000"
username="username" 
initialSize = "5"
password="password"
driverClassName="jdbc.driver.name"
url="jdbc:protocol://hostname:port/dbname"/>

當我的應用程序部署時,它有5個連接(初始大小),當所有這些連接忙於tomcat創建並添加到池中的新連接(6)時,這個新的連接限制是maxActive(100),當101個請求到來時,tomcat將等待1000毫秒(maxWait),然后拋出TimeOutException。 在某段時間內,只有40個連接正忙,當其中一個連接空閑時,它將被銷毀,因為池幾乎有30個(maxIdle)空閑連接。 我對嗎?

如果我是,那么將maxIdle和maxActive設置為不同值的目的是什么?

在某段時間內,只有40個連接正忙,當其中一個連接空閑時,它將被銷毀,因為池幾乎有30個(maxIdle)空閑連接。

當40個連接忙,其中一個空閑時,它變為空閑狀態 ,導致以下狀態:

39 busy connections
1 idle connection 

maxActive設置指定在任何給定時間在任何狀態下可能存在的最大連接數。 maxIdle設置更具體,僅確定最大空閑連接數。

假設maxActive設置為100並且在某個點上所有這些連接都存在並且正忙,那么如果幾分鍾后它們都是空閑的,那么你不想保留這100個空閑連接,因為它們沒有做任何事情除了消耗資源。

這是maxIdle設置發揮作用的地方。 它告訴連接池不能容納超過X個空閑連接。 如果設置為30,則丟棄100個空閑連接中的70個連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM