27

HikariCP のドキュメントによると、パフォーマンスを向上させるために固定サイズのプールを作成することが言及されています。

最小アイドル:

このプロパティは、HikariCP がプール内で維持しようとするアイドル接続の最小数を制御します。アイドル接続がこの値を下回ると、HikariCP は追加の接続を迅速かつ効率的に追加するために最善を尽くします。ただし、最大のパフォーマンスと急増する需要への応答性を得るには、この値を設定せず、代わりに HikariCP を固定サイズの接続プールとして機能させることをお勧めします。デフォルト: と同じmaximumPoolSize

私のアプリケーションは通常 100 接続を必要とし、200 接続に達する状況はごくわずかです。

200 接続の固定サイズ プールを作成すると、ほとんどの場合、100 接続がアイドル状態になります。

したがって、次のうちどれが最適ですか。

  1. 固定サイズの接続プールを作成します。つまり200

また

  1. minimumIdle100 とmaximumPoolSize200 に設定して、接続プールを作成します。

HikariCP が 2 番目の点を推奨しないのはなぜですか? 私の場合、2番目のものが最適だと思います。

4

2 に答える 2

35

このページを読み、添付のビデオをご覧になることをお勧めします。Oracle Performance Group は、96 接続のプールを持つアプリケーションが 10,000 人のフロントエンド ユーザーと毎秒 20,000 トランザクションを簡単に処理する方法を示しています。

PostgreSQL は次の式を推奨しています。

connections = ((core_count * 2) + effective_spindle_count)

はCPUcore_countコア、effective_spindle_countは RAID 内のディスク数です。多くのサーバーでは、この式により、接続プールの最大接続数が 10 ~ 20 になります。

接続が 100 であっても、データベースがかなり飽和状態になる可能性があります。CPUコアは50個ですか?ドライブが SSD ではなくプラッターを回転させている場合、ヘッドは一度に 1 つの場所にしか存在できず、データセット全体がメモリ内にない限り、一度に非常に多くの要求 (100-200) を処理する方法はありません。

更新: 固定プールのサイジングに関する質問に直接回答します。DB が処理できる「ニー」または「ピーク」パフォーマンスで最大接続数を右に向けたプールを使用して、アプリケーションから最高のパフォーマンスを得る可能性があります。これはおそらく少数です。多くのアプリケーションがそうであるように、「需要の急増」がある場合、急増の瞬間にプールを拡大するために新しい接続を開始しようとすると、逆効果になります (サーバーにより多くの負荷がかかります)。小さく一定のプールを使用すると、予測可能なパフォーマンスが得られます。

于 2015-03-11T13:57:05.537 に答える