問題タブ [connection-pooling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ASP.net アプリケーションで SqlServer 接続リークを検出する方法は?
現在、ASP.net 2.0 アプリケーションでいくつかの GUI テストを行っています。RDBMS は SQL Server 2005 です。ホストは Win Server 2003 / IIS 6.0 です。
コードを公開していない外部企業によってプログラムされたため、アプリケーションのソース コードはありません。
IIS を再起動するとアプリケーションが正常に動作することに気付きましたが、いくつかのテストの後、ブラウザを数時間開いて閉じた後、アプリケーションがどんどん遅くなり始めました。この動作は、プログラマーの不適切なクローズ接続の慣行によるものかどうか疑問に思っていました: ここのデータベースでオープン接続リークが発生していると思われます。
最終的には .Net ガベージ コレクターによって閉じられると思いますが、それにはしばらく時間がかかります。
SQL Server Management Studio を持っていますが、アクティビティ モニターから、データベースでかなりの数の接続が開かれていることがわかります。
上記のすべてから、主な質問に関連するいくつかの質問があります。
SQL Server 2005 で、接続が接続プールで使用されるのを待っているために開いているのか、それともアプリケーションによって使用されているために開いているのかを知る方法はありますか?
この種の問題を追跡するのに役立つパフォーマンス カウンターまたはその他の種類のツールの使用方法を学べる優れたオンライン/紙のリソースを知っている人はいますか?
パフォーマンス カウンターが最適なソリューションである場合、監視すべき変数は何ですか?
asp.net - SqlDataSource または ObjectDataSource を使用しているときに接続/データリーダーを閉じる方法
ベータ テスト中に、接続プーリングのエラー メッセージが発見されました。したがって、私はコードを調べて、SqlDataReader オブジェクトが閉じられていない場所はどこでも閉じています。私が知る必要があるのは、SqlDataSource または ObjectDataSource タグの SelectStatement 属性で指定されているデータリーダーを閉じる方法 (または閉じる必要がある場合) です。それらが処理されない場合、接続リークが発生する可能性はありますか?
前もって感謝します !
java - hsqldb での接続プーリング
速度を犠牲にすることなく、hsqldb で接続プールを実装する最良の方法は何ですか?
rdbms - 接続プールをどのように設定しますか?
以下に関してプールを設定するための最良の方法は何ですか:-
- いつ接続を作成しますか?
- いつ接続を閉じますか、そしてそれらすべてを閉じますか?
- 接続がまだ良好であるかどうかをテストしますか。いつ、どのように?
- 接続の最大数の適切な数をどのように把握しますか?
- プールのユーザーの行動を確実にするために、どのような監視を行っていますか?1つの悪いコードがすべてを取り出すのを止めることができますか?
- 独自のプールを作成しましたか、それともサードパーティのライブラリを使用しましたか?
これは不可知論的な質問だと思いますが、特定のデータベース/言語の「機能」についてのコメントを歓迎します。たとえば、一部のデータベースでは、他のデータベースよりも接続に時間がかかるか、費用がかかる場合があります。
明確にするために、私はプールを最初から作成するつもりはありません。この質問は、プールを実行する既存のライブラリを構成する方法に関するものです。
java - dbcp での PreparedStatement プーリングの使用
dbcp を使用して準備された接続プールをどのように使用できるかを誰かが説明できますか? (可能であれば、いくつかのサンプルコードを添えて)。私はそれをオンにする方法を見つけました - KeyedObjectPoolFactory を PoolableConnectionFactory に渡します。しかし、その後、特定の準備済みステートメントをどのように定義する必要があるのでしょうか? 現在、プールから接続を取得するために PoolingDataSource のみを使用しています。プールから準備済みステートメントを使用するにはどうすればよいですか?
java - 対処方法:通信リンク障害
Spring 2.5.4/Hibernate 3.2/Websphere Application Server 6.1.0.17 を使用しています。アプリケーションを AIX ボックスにデプロイしました。翌日、私はアプリケーションにログインしようとしました。ページでこの例外が発生します。
Error 500: Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
System.Outログを確認し、詳細を確認しました。(ログの書式設定がページ レイアウトを台無しにしていたため、pastebin を使用)
例外の原因となっているコード行は次のとおりです。
Spring の applicationContext.xml で接続を配線しています。AS400 の接続がときどきドロップすることは認識しています (システムが一晩で再起動する可能性がありますが、よくわかりません)。ただし、applicationContext ですべてを配線している場合は、新しい接続を開きたくない場合があります。
この問題は、DataSource/JNDI または JDBC の使用に関係なく発生します。
接続が古くなるかどうかを確認するために Spring または Hibernate に追加する設定を知っている人はいますか? または、この問題を解決するための他のアイデアはありますか? さらに情報/コードが必要な場合はお知らせください。
とても有難い、
クリス
アップデート:
Spring Community Forums のいくつかの投稿をチェックして、「testWhileIdle」や「validationQuery」などのプロパティを持つ commons-dbcp で DataSource を実装しました。アプリを実行したままにして、午前中にもう一度確認します。結果のアップデートを投稿します。
更新#2:
dbcp-commons BasicDataSource を使用すると、ネットワークの問題であると思われるこの問題が修正されるようです。Websphere にはプールされた接続があり、AS400 側でネットワークの問題が発生した場合は、その接続を使用しようとしますが、それが「古い」ことを認識していません。時間間隔を指定して validationQuery を使用することは、この問題を解決する安価な (しかし効率的な) 方法ですが、Websphere 側で構成するより良い方法があるかもしれません。しかし、壊れていないものは変更しない方がよいので、これが失敗するまでは、おそらくこれが今後の解決策になるでしょう。
java - Java、MySQL、および Tomcat 6 で接続プールを使用する方法
Java+MySQL+Tomcat 6 で接続プールを使用するにはどうすればよいですか?
この記事http://dev.mysql.com/tech-resources/articles/connection_pooling_with_connectorj.htmlを読みましたが、まだよくわかりません。
Connector/J はどこで使用できますか? 静的変数に入れますか?SessionListener を使用しますか? 設定は必要ですか?
前もって感謝します!
multithreading - 複数のスレッドと接続プールを使用する場合の接続タイムアウトを回避する
読み取り専用データベース操作を複数のチャンクに分割しています (それぞれが非常に大量のデータのサブセットを読み取り、それを分析し、結果をディスク ファイルに書き込みます)。
各チャンクは、(デリゲートと BeginInvoke を使用して) 新しい .net スレッドで (データテーブルへの) Select を実行します。
プール内の使用可能な接続よりも多くのデータのサブセットがあるため、接続が不足すると、最初の接続が解放される前に、後続の接続要求がキューに入れられます...接続タイムアウトが期限切れになるまで、タイムアウト例外。
A) プール内の接続がすべて使用中の場合にタイムアウト接続の例外を禁止する方法、または B) 別の接続を要求する前にそれらがすべて使用中であることを検出して、要求する前に接続が使用可能になるまで待機できるようにする方法?
python - Mysql 接続プーリングの質問: それだけの価値はありますか?
mysql の接続プロセスは他の RDBMS に比べて非常に高速になるように設計されているため、接続プールを提供するライブラリ(SQLAlchemy) を使用しても、接続プールを有効にすると実際にはそれほど役に立たないという話を聞いたことがあります。
誰もこれについて経験がありますか?
一部のコードが db 接続に対してステートフルな処理を行っており、(おそらく誤って) それ自体がクリーンアップされない場合、通常は接続を閉じるときにクリーンアップされる状態が代わりに再利用された接続を取得する後続のコードに伝播されます。