2009-09-15 41 views
6

私のアプリケーションでは、hibernate 3.2.2を使用しています。接続プーリングについては、c3p0 0.9.1を使用しています。 私はデータベース操作を行うためにビューパターンで汎用DAOパターンとオープンセッションを使用しています。
既存のウェブサイトの新しいウェブサイトに取り組んでいます。現時点では、訪問の回数は、既存のアプリケーションでは50万ペー​​ジの訪問です。私はc3p0設定と混同しています。どのようなベンチマークで、私はオープンする接続の数を決定します。最大接続、MIN-接続、アイドル時間、タイムアウトなど....接続プーリングで必要な接続数を決定するにはどうすればよいですか。

+1

5 laks = 500,000、はい? –

+0

はい。ありがとうございます。私はそれを50万に変更します。 – Shashi

+0

こんにちはシャー​​シ。 http://stackoverflow.com/questions/1208077/optimal-number-of-connections-in-connection-poolをご覧ください。 –

答えて

3

まず、要求が到着し、サービスを提供するための空き接続がない場合、プールが行う処理を決定する必要があります。それは例外をスローしますか? nullを返しますか?別の接続がプールに返されるまでブロックしますか?

あなたが容量を超えたときに何が起こるかわからたら、あなたが呼び出すコードでこれに対処できるかを考え、どのような状況では、これを実現するために許容可能です。コネクションの数が増えるにつれて、いくつかの要求を処理することを拒否し始めなければならない場合がありますが、そのポイントだけを決定することができます。実際のポイントは

  • あなたの現在のアイドル、ビジー要求率
  • これらのレートのボラティリティー率はたくさんの周りにジャンプする場合(あなたがより多くの「余裕」をしたいようなものを含め、多くの要因に依存します)
  • ハードウェアの改善と比較して容量の増加が予想され、開発者の時間がこのコードを修正するために予算化されています(2ヶ月後にアップグレードする予定がある場合は、数年)
  • 貴社が処理能力について保証している保証
  • "後で試してみる"要求を理解するクライアントの能力。もう片方の自動化されたスクリプトで、503で1分間スリープしてもう一度試してみると、人間が「一時的に容量を超えました」というメッセージよりも優れていて、 200レスポンスを返し、エラーで終了します。
  • 要請の緊急性 - 若干の要求(子猫の写真を見る)は合理的に遅れる可能性がありますが、他のもの(株取引注文)は非常に時間に敏感です。

などなどなど。

希望すれば、同時に処理する必要があるリクエストの数を考え出すことができます(また、タイプのリクエストがある場合は、のリクエストがある場合は、これも考慮する必要があります) 。次に、接続の目標速度を維持するために必要なプール内の接続数を検出するまで、着信要求がどのように取得して接続、推論、プロファイリングを取得するかを調べるだけです。

リクエストされていないスレッド(ワーカープールなど)が同じプール(プールが大きくなる必要があります)から独自の接続を取得すること、およびそのリクエストの一部実行(プールは小さくすることができます)。

0

小さな設定変更を行う、あなたのテストインスタンスをプロファイルして、最終的には負荷テストで確認してください。

関連する問題