23

私はオープンソースのJavaベースのアプリケーション、つまりxwikiに取り組んでいます。Insie hibernate.cfg.xmlパラメーターconnection.pool_sizeとstatement_cache.sizの値を2(それぞれ)として表示できます。私のアプリケーションは、ある時点で最大100ユーザーの負荷がかかります。さて、私の質問は、このための理想的な接続プールのサイズは何であるかということです。私にはサイズ2は非常に少なく見えます。一度に100人のユーザーが接続する場合、98人のユーザーは接続が解放されるのを待つ必要がありますか?私の場合、接続プールのサイズを100のままにする必要がありますか?

私はマイクロソフトSQLサーバーを使用しています。

これとは別に、最大接続プールサイズには制限があります。Webサーバー(私の場合はtomcat)またはデータストアベンダー(ms sql server)に依存しますか?

4

4 に答える 4

17

接続プールのサイジングは簡単なことではありません。基本的に必要なもの:

  • 接続の使用状況を調査するためのメトリクス
  • 利用可能な接続がない場合のフェイルオーバーメカニズム

FlexyPoolは、適切な接続プール サイズを把握するのを支援することを目的としています。

于 2014-05-08T09:00:45.900 に答える
11

通常のリクエストがその時間の50%を計算に費やし、50%をデータベース接続に費やしている場合、プールに必要な接続は50個だけです。もちろん、アプリケーションはできるだけ早くdb接続を解放する必要があります。

一般に、接続を保持することはデータベースにとって高価ではありません(新しい接続を作成することは非常に高価です)。サイズを十分に大きくしておいても問題ありません。

設定できます

  • プールの最大サイズを100まで
  • 50までの優先プールサイズ
  • プールされた接続のアイドルタイムアウトは5分です。

私はマイクロソフトSQLサーバーに精通していませんが、その最大プール制限は100だと思います

Tomcatは、この数のプールサイズで問題ありません。

于 2012-01-06T06:10:33.727 に答える
3

アプリケーションの同時実行要件、データベース操作時間、およびサーバー (またはデータベース ベンダー) がサポートできる接続数を評価する必要があります。

したがって、ユーザーが 100 人だからといって、サイズ 100 の接続プールが必要というわけではありません。

于 2012-01-06T06:19:52.207 に答える