ColdFusion Administrator で (MS SQL Server 2008 への) 2 つの異なるデータ ソース接続を作成しましたが、接続の実際の名前以外はまったく同じ設定です。私の質問は、これにより 2 つの異なる接続プールが作成されるのか、それとも 1 つを共有するのかということです。
3 に答える
それらには異なるプールがあります。プールはデータ ソース レベルで定義され、ColdFusion に関する限り、2 つの異なるデータ ソースがあります。まったく同じ設定の 2 つの異なるデータ ソースを使用する理由は何ですか? 異なる接続プールを使用するように強制したい場合だと思います。理由が思い浮かびませんが。
データベース接続が ColdFusion でどのように処理されるかを説明しているこのページを見つけました。[データベース接続を維持する] 設定は、データ ソースごとに設定されていることに注意してください。
そのページからの接続プーリングに関連するセクションを次に示します(消えた場合に備えて)。
「データベース接続の維持」がデータ ソースに設定されている場合、ColdFusion Server はどのように接続プールを維持しますか?
データ ソースに対して [データベース接続を維持する] が設定されている場合、ColdFusion はデータベースへの最初の接続の後、接続を開いたままにします。この最初の接続の後、データベースからログアウトしません。この設定は、上記の手順 d の指示に従って変更できます。「キャッシュされたデータベース接続の非アクティブ時間を X 分に制限する」という ColdFusion Administrator の別の設定は、X 分非アクティブになった後、「維持された」データベース接続を閉じます。この設定はサーバー全体であり、「維持された」接続が最終的にいつ閉じられるかを決定します。この設定は、ColdFusion Administrator 内の [キャッシュ] タブに移動して変更できます。「キャッシュされたデータベース接続の非アクティブ時間を X 分に制限する」を変更するためのインターフェースは、次のようになります。
要求が既に開かれているデータ ソース接続を使用している場合、データ ソースへの別の要求が着信すると、新しい接続が確立されます。接続を使用できるのは一度に 1 つの要求のみであるため、使用可能なアイドル状態のキャッシュ接続がないため、同時要求によって新しい接続が開かれます。接続プールは、データ ソースごとに設定されている同時接続制限の設定まで増やすことができます。「接続の制限」と呼ばれるこの設定は、ColdFusion Administrator にあります。データ ソース タブの 1 つをクリックしてから、データ ソースの 1 つをクリックします。「CF 設定」をクリックし、「接続数を制限する」にチェックを入れ、「X 個の同時接続数の制限を有効にする」という文に数字を入力します。データソース設定でこれを設定しないと、
この時点で、ColdFusion Server が維持する 2 つのデータベース接続のプールがあります。各接続は、「接続タイムアウト」期間に達するか、非アクティブ時間を超えるまで、プールに残ります。最初の 2 つのオプションのどちらも実装されていない場合、接続は ColdFusion が再起動されるまでプールに残ります。
「接続タイムアウト」設定により、接続が閉じられ、接続がアクティブか非アクティブかに関係なく、プールから削除されます。プロセスがアクティブな場合、接続は終了しません。この設定を変更するには、ColdFusion Administrator でデータ ソースの [CF 設定] に移動します。注: 「キャッシュされたデータベース接続の非アクティブ時間」設定のみが接続を終了し、使用されていない場合はプールから削除されます。また、[接続タイムアウト] を使用して、[キャッシュされたデータベース接続が非アクティブ] 設定をオーバーライドすることもできます。これは、すべてのデータ ソースではなく、1 つのデータ ソースにのみ適用されるためです。
彼らは異なるプールを持っています。プーリングは、cf Java コードによって実装されます。(または、jrunコードのその部分でした....)。jdbc ベースのプーリングは使用しません。Cf10はjdbcベースのプーリングに切り替えることができたかもしれませんが、私はそれを疑っています.
テストとして
両方のプールで、'verify connection' sql を wait-for delay '00:01:00' など (1 分間待機) に設定します。検証の実行にかかる時間を含めて、プール アクセスはプールごとにシングル スレッドであるため、それぞれが異なるデータ ソースにアクセスする 2 つのページを用意し、両方をリクエストします。1 分後に完了する場合は 2 つのプールです。1 つのページに 1 分かかり、もう 1 つのページに 2 分かかる場合は 1 つのプールです。
補足として、この 1 分間にネットワーク ケーブルを引き抜いたことを確認すると (jdbc ソケットが応答を待って永久に開いたままになる)、スレッド プールが停止し、CF を再起動する必要があります。
2 番目のクエリでエラーが発生した場合は、同じプールを使用し、完全に実行されたファイルは異なるプールを意味します。