1

Sequelize.jsでは、最大接続プールサイズ(デフォルトは5)を設定する必要があります。私はAWSのオートスケーリングプラットフォームで作業しているので、この設定をどのように処理するのか分かりません。最大接続プールサイズと自動スケーリンググループ

r3.2xlargeのAurora DBクラスタでは、読み取りレプリカごとに最大2000個の接続が可能です(SELECT @@ MAX_CONNECTIONS;を実行して取得できます)。

問題は、私たちのEC2でホストされている各サーバーに対して、どのような構成が正しいかわからないことです。オートスケーリンググループによって起動されるサーバーの数はわからないので、正しい最大接続プールサイズはどれくらいですか?通常、DB MAX_CONNECTIONSの値は接続プールの数(サーバーごとに1つ)で除算する必要がありますが、最後にインスタンス化されるサーバーの数はわかりません。

同時ユーザー数は、リリース日現在の同時ユーザー数が50000〜75000人と推定されています。

このような状況で以前に経験を積んだ人はいましたか?

答えて

1

あなたが尋ねてから6週間経っていますが、最近この件に関わったので、私は自分の経験を共有すると思っていました。

アプリケーションがどのように動作して実行されるかに基づいてさまざまな回答があります。また、インスタンス・タイプのロード中のアプリケーションの特性も考慮してください。

1)プールサイズは、ホスト上で実行される予定の同時クエリよりも大きくする必要があります。
2)クライアントの数*プールサイズが最大接続制限に近づくことは決してありません。

ほとんどのコードではクエリを実行してから解放するため、同時クエリは通常は同時のWeb要求よりも少ないことに注意してください。

したがって、アプリケーションをモデル化して、75Kユーザーの実際のクエリ(および量)を理解する必要があります。これは、75K /秒のdbクエリに1秒以上の時間がかかる可能性があります。

次に、jmeterを使用してスクリプトを作成し、パフォーマンスをシミュレートするテストを実行できます。テスト中に行った項目の1つは、プールを高くしてパフォーマンスの違いを確認することでした。ベースラインを行った後、実際には大きな数字(100)を使用し、その数字が異なることがわかりました。差をつけ始めるまで、それを落としました。私たちの場合、それは15だったので、それを20に設定しました。

これは、私たちのアプリケーションサーバーとしてのt2.microに対するものです。サーバーをもっと大きなものに変更すると、この値は上がるでしょう。

より高い数値を設定すると、アプリケーションの起動時に費用がかかります。また、アイドル状態の接続を維持するためにサーバにオーバーヘッドが発生するため、必要以上に大きくするとうまくいかないことに注意してください。

これが役に立ちます。

+0

回答と入力いただきありがとうございます。私は、過去数週間にわたってLocustを使ってあなたのようなシミュレーションを行いました(さまざまなユースケースのシナリオ)。これらのストレステストを通じて、最悪の場合のシナリオをカバーするために、10〜12分の範囲で150Kの同時クライアントを実行しました。結局のところ、皆のために十分なDB接続以上のものがあり、私たちはあなたが行ったように各インスタンスの正しいプールの最大サイズを見つけることができたと結論づけます。私はこれがこの問題を解決する良い方法だと思います。 – NinjaFisherman

関連する問題