SpringのプロファイルでアプリケーションContext-mybatis.xmlでデータソースオブジェクトを構成する場合、SQLハートビートパケットとパラメータの意味を構成します.
9893 ワード
SpringのプロファイルでアプリケーションContext-mybatis.xmlでのデータソースオブジェクトの構成 initalSize:データベース接続プール接続を初期化するときに最初に作成する接続数.デフォルトは0です. maxActive:接続プールで同時に接続される最大接続数を定義します.デフォルトでは8です.50に設定すると、単機同時50程度の処理能力をサポートできることを示す. maxIdle:接続プールで許可できる最大アイドル接続数を定義します.デフォルト接続は8です.設定した空き接続数を超えると解放され、負数に設定すると制限されないことを示します. minIdle:接続プールの最小接続数を定義します.デフォルトの接続数は0です.この値を下回る接続プールでは、新しい接続が作成されます.注意:maxIdleは設定できません.高負荷の場合、接続のオープン時間がクローズ時間よりも速いため、接続プール内の空き接続数が最大の空き数を超え、接続が頻繁に破棄され、作成され、パフォーマンスが低下するため、具体的な設定はトラフィックに基づいて定義されます.minIdleでは、一般的に設定された数値がmaxIdleに近いほど、接続の作成と破棄にシステムリソースが消費されるため、システムのパフォーマンスが向上します.この値をあまり大きく設定することはできません.そうしないと、サーバが暇なときにminIdle個数の接続が作成されます. maxWait:ms単位で最大待機接続時間を定義します.すなわち、接続プールに使用可能な接続がない場合.接続プールで待機している接続が解放される最大時間.待機時間がこの設定時間を超えると異常が放出され、この値が-1に設定されていると無限に待機していることを示します.この既定値は無限待ちです.この値を設定すると、スレッドプールが不足しているため、リクエストが無限に停止され、接続が使用できないという問題を回避できます. removeAbandoned:この構成項目を定義する役割は、接続プールが不要な接続回収を開くかどうかを示すメカニズムであり、デフォルトはfalseであり、ここではtrueに調整される. removeAbandonedTimeout:不要な接続プールの回収メカニズムをオンにした後、この構成項目を構成し、接続プールが構成時間を超えた後に無駄な接続を回収することを制御することができ、この構成のデフォルト値は300秒で、少し少なく、できるだけ迅速に無駄な接続を回収することを提案します. testWhileIdle:Evictを開くタイミングチェックサイクルチェックを定義) testBetweenEvictionRunsMillis:ミリ秒単位でEvict間隔を定義します.ここでは6000、すなわち1分とします.この値が0より大きいとEvictが開きます. testOnBorrow:brrowObject処理中に取得した接続を検証するかどうか、falseは非検証、デフォルトはfalseと定義します. testOnReturn:returnObjectの場合に返される接続を検証するかどうかを定義します.falseは非検証、デフォルトはfalseです. validationQuery:検証に使用するSQL文を定義し、MySQLとの簡単な通信で接続が有効かどうかを検証します.注意:このSQL文はあまり複雑ではありません.複雑な検証SQLはパフォーマンスに深刻な影響を及ぼします. numTestsPerEveictionRun:各検証接続の数を定義します.一般的に、この値はmaxActiveと同じサイズで、すべての接続を検証できます.注意:SQLハートビートの構成は、接続を検証しながら、データベースの再接続の問題を解決し、接続プール内の接続が実際に有効であることを確認します.例:システムが正常に稼働している場合、何らかの理由でデータベースを停止する必要がある場合(またはバーストでデータベース・サーバが直接ダウンタイムする場合)、接続プールのすべての接続が無効になり、システム全体の機能が使用できなくなります.アプリケーション・システムに正常にアクセスし、システム機能を使用するには、データベース・サーバとアプリケーション・サーバを再起動する必要があります.したがって、SQLハートビートパッケージの構成があれば、データベースが再起動されるとシステムが再起動する必要はありません.また、MySQLデータベースのデフォルトでは8時間以内に動的に接続されていない(つまり、要求データがない)ため、MySQLはすべての接続を自発的に切断します.この場合、アプリケーションシステムは使用できません.リカバリするにはアプリケーションを再起動し、接続を再確立し、MySQLを自発的に要求する必要があります.上記のtestWhileIdle、testOnBorrow、testOnReturnは、接続プールが提供するいくつかの検証メカニズムであり、外部フックによってコールバックされる.dbcp接続プールvalidationQueryを使用してデータベース接続検証クエリーを定義します.ここでは「select 1」の簡単な検証SQLを使用して接続プールを検証します.全体の検査の過程:whileIdle検査を開いた後、1つの回収(Evict:法に基づいて回収)のタイマーを開いたことに相当して、タイマーの時間を通じて絶えず検査を行って、タイミングは接続を検査します.無効な接続をオフにした後、適切に接続を確立し、最小minIdleの接続数を保証します.タイミングがオンになっている以上、時間ポーリングを定義する必要があるので、t e s t BetweenEvenictionRunsMillis構成は、Evenictのタイミング間隔を定義します.
データソースプロファイル(database.properties)
<context:property-placeholder location="classpath:database.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" scope="singleton">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${password}" />
<property name="initialSize" value="${initialSize}"/>
<property name="maxActive" value="${maxActive}"/>
<property name="maxIdle" value="${maxIdle}"/>
<property name="minIdle" value="${minIdle}"/>
<property name="maxWait" value="${maxWait}"/>
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<property name="removeAbandoned" value="${removeAbandoned}"/>
<property name= "testWhileIdle" value="true"/>
<property name= "testOnBorrow" value="false"/>
<property name= "testOnReturn" value="false"/>
<property name= "validationQuery" value="select 1"/>
<property name= "timeBetweenEvictionRunsMillis" value="60000"/>
<property name= "numTestsPerEvictionRun" value="${maxActive}"/>
bean>
データソースプロファイル(database.properties)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=utf-8
user=root
password=root
minIdle=45
maxIdle=50
initialSize=5
maxActive=100
maxWait=100
removeAbandonedTimeout=180
removeAbandoned=true