2017-10-12 31 views
2

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"/> 

私のアプリケーションがデプロイされると、それはすべてのこれらの接続は、Tomcatが(作成し、新しい接続をプールに追加忙しいとき、5つの接続(初期サイズ)を持っています6)、この新しい接続制限はmaxActive(100)であり、101個のリクエストが来ると、tomcatは1000 ms(maxWait)を待ち、TimeOutExceptionをスローします。ある期間では40の接続のみがビジー状態になり、そのうちの1つが空いている場合、プールには30(最大)の空き接続がほとんどないため、破棄されます。私は正しい?

もし私がいたら、maxIdleとmaxActiveを異なる値に設定する目的は何ですか?

答えて

1

いくつかの期間では、接続が40回しかビジーではなく、1つが空いている場合、プールにはほとんど30(最大)の空き接続があるため、破棄されます。

39 busy connections 
1 idle connection 

maxActive設定が存在する可能性がある接続の最大量を指定し、:40台の接続がビジー状態であり、そのうちの一つがフリーになり、それは次のような状態で、その結果、アイドルなり

任意の状態で、任意の時点で。 maxIdleの設定はより具体的であり、アイドル接続の最大量のみを決定します。

maxActiveが100に設定されていて、特定の時点でこれらの接続がすべて存在し、ビジー状態であるとしたら、2,3分後にすべてアイドル状態になると、100個のアイドル接続を保持したくないリソースを消費する以外に何もしていません。

これはmaxIdleの設定が有効になる場所です。これは、接続プールにX回以上のアイドル接続を保持しないように指示します。 30に設定すると、100個のアイドル接続の70個の接続が切断されます。

+0

ありがとうございます。「30に設定すると、100個のアイドル接続の70個の接続が切断されます。」 70の接続が切断され、30の接続がアイドル状態になることを意味しますが、30の接続がすべてビジー状態のときは、新しい接続が作成され、応答後に自動的にアイドル状態になります。 –

+0

@АлмасАбдразакはい、すべての接続が作業を中断しなくなったときにすべての接続がアイドルになり、maxIdle設定が存在して何もしない接続の最大量を決定します。 –