我想知道我對Tomcat連接池生命週期的理解是否正確。瞭解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 ms(maxWait),然後拋出TimeOutException。在一段時間內,只有40個連接處於忙碌狀態,當其中一個連接空閒時,它將被銷燬,因爲連接池幾乎有30個(maxIdle)空閒連接。我對嗎?
如果我是,那麼將maxIdle和maxActive設置爲不同值的目的是什麼?
感謝您的迴應,「如果它設置爲30,則會刪除100個空閒連接中的70個連接。」這意味着有70個連接被丟棄,並且30個連接現在處於空閒狀態,但是當所有30個連接都忙時,tomcat會創建新的連接,並在響應後自動空閒? –
@АлмасАбдразак是的,當他們不再忙於工作時,所有連接都變得閒置,並且maxIdle設置決定了可能存在並且什麼都不做的連接的最大數量。 –