NCache 容易かつコスト効率よく、パフォーマンスを線形的に拡張・向上させるのに役立ちます。世界中のフォーチュン500企業が信頼を寄せています。 NCache 13 年以上にわたり、データ ストレージとデータベースに関連するパフォーマンスのボトルネックを解消し、.NET アプリケーションをエクストリーム トランザクション処理 (XTP) に拡張してきました。
この文書では NCache 5.0に最新のAPIといくつかの新機能を追加し、.NETアプリケーションで実現できる線形スケーラビリティと卓越したパフォーマンスを実証しました。この実験では、モデムをバンドルしました。 NCache パイプラインを有効にしたパーティションキャッシュトポロジを備えたAPI。データはすべてのキャッシュサーバーに完全に分散され、クライアントは読み取りおよび書き込みリクエストのためにすべてのサーバーに接続します。
このベンチマークでは、 NCache クラスターは線形にスケーリングでき、達成しました 2つのキャッシュサーバーノードのみを使用した5秒あたりXNUMX万トランザクション。 また、次のことを示します NCache 大規模なクラスターでもサブマイクロ秒の遅延を実現できます。 このホワイトペーパーでは、ベンチマーク設定、ベンチマークを実行するための手順、構成のテスト、構成のロード、および結果について説明します。 これで実際のベンチマーク実験を見ることができます ビデオ.
ベンチマークの設定を確認しましょう。このテストではAWS m4.10xlargeサーバーを使用します。このサーバーはXNUMX台あります。 NCache キャッシュクラスターを構成するサーバーです。15台のクライアントサーバーがあり、そこからアプリケーションを実行してこのキャッシュクラスターに接続します。
オペレーティングシステムとしてWindows Server 2016(データセンターエディション、64ビット)を使用します。 NCache 使用しているバージョンは5.0 Enterpriseです。このベンチマーク設定では、 パーティションキャッシュトポロジパーティションキャッシュトポロジでは、すべてのデータがすべてのキャッシュサーバーのパーティションに完全に分散されます。また、すべてのクライアントはすべてのサーバーに接続して読み取りおよび書き込みリクエストを処理し、すべてのサーバーを同時に利用します。このトポロジではレプリケーションは有効になっていませんが、次のような他のトポロジもあります。 パーティション化されたレプリカトポロジ レプリケーション サポートが装備されています。
私たちは パイプライン 有効にしたのは、 NCache 5.0。クライアント側で実行時に発生するすべてのリクエストを蓄積し、サーバー側でそれらのリクエストを一括適用するという仕組みです。蓄積はマイクロ秒単位で行われるため、非常に最適化されており、トランザクションの負荷要件が高い場合に推奨される構成です。
ここでは、ハードウェア、ソフトウェア、負荷構成を含むベンチマーク設定の概要を簡単に説明します。
| クライアントとサーバーの詳細 (仮想マシン) |
AWS m4.10xlarge: 40 コア、160 GB メモリ、ネットワーク - 10 Gbps イーサネット |
| サーバーノード数 | 5 |
| クライアントノード数 | 15 |
| オペレーティングシステム | Windows Serverの2016 データセンターエディション – x64 |
| NCache | 5.0 |
| クラスタートポロジ | パーティションキャッシュ構成 |
| キャッシュサイズ | 4 GB |
| データサイズ | サイズ100のバイト配列 |
| Total Items | 1,000,000 |
| パイプライン | 使用可能 |
| 取得/更新比率 | 80:20 |
| スレッド | 1280 |
| アプリケーションインスタンス | クライアントマシンごとに 2 つのインスタンス、合計 30 のインスタンス |
ベンチマーク環境のセットアップ後、キャッシュクラスターに1万アイテムのデータを配置します。クライアントアプリケーション(Cache Item Loader)を実行し、キャッシュに接続して1万アイテムを追加します。1つのクライアントがすべてのキャッシュサーバーに接続し、キャッシュクラスターにXNUMX万アイテムを追加します。その後、読み取りおよび書き込みリクエストを開始できます。
あなたはこれを使用することができます NuGet パッケージ – NCache SDK クライアント マシンに SDK をインストールし、クライアントとサーバー間のパイプラインを構成し、負荷生成アプリケーション (GitHub) をデプロイして、キャッシュ クラスターに 1 万個のキャッシュ項目を設定します。
アプリケーションを実行して、このキャッシュクラスタに80%の読み取り操作と20%の書き込み操作でトランザクション負荷をかけます。Perfmonカウンタを使用して、すべてのアクティビティを監視できます。まず、各クラスタに10個のクライアントインスタンスを接続します。 NCache 1 秒あたりのフェッチと更新のアクティビティがあるサーバー。
スクリーンショットでは、10ノードのクラスタに5のクライアントインスタンスが接続している場合、180,000秒あたりのリクエスト数は190,000万から5万件であることがわかります。 NCache 並行して動作しているサーバーでこれらのリクエストを蓄積すると、このキャッシュ クラスターによるリクエスト数は 1 秒あたり XNUMX 万件に達します。
メモリとCPUの使用効率は高く、平均マイクロ秒/キャッシュ操作は10マイクロ秒弱です。ステージ1は完了し、キャッシュクラスターから毎秒XNUMX万回の操作を達成しました。
| ステージ1 – 概要データシート | |
| クラスター内のキャッシュサーバーの合計数 | 5 |
| 接続されたクライアントインスタンスの合計数 | 10 |
| 1秒あたりのリクエスト数 / ノード | 180,0000〜190,000 |
| 合計リクエスト数 - キャッシュクラスター | 950,000〜1,000,000 |
| % プロセッサ時間(最大) | 20% |
| システムメモリ | 4.2 GB |
| レイテンシ(マイクロ秒/キャッシュ操作) | 10マイクロ秒/操作 |
1万TPSを達成したので、次はアプリケーションインスタンスを増やしてトランザクション負荷を高めます。アプリケーションが実行されると同時に、20秒あたりのリクエスト数が増加します。クライアント数を300,000に増やします。この構成では、以下のスクリーンショットに示すように、インスタンスあたり1.5秒あたりXNUMX万リクエストに達しています。このキャッシュクラスターで、XNUMX秒あたりXNUMX万リクエストを達成しました。
各サーバーの300,000秒あたりのリクエスト数は200,000万件です。フェッチは50,000秒あたり100,000万件強、更新は4万~3万件程度で、キャッシュ操作あたりの平均マイクロ秒は4マイクロ秒未満です。これは、パイプラインの効果と合わせてレイテンシが非常に低いことを考えると驚くべきことです。クライアント側からのトランザクション負荷が高い場合、パイプラインは非常に有効で、レイテンシを削減し、スループットを向上させます。そのため、パイプラインを有効にすることを推奨しています。さらに、キャッシュ操作あたりの平均マイクロ秒は現在XNUMX~XNUMXマイクロ秒程度です。
| ステージ2 – 概要データシート | |
| クラスター内のキャッシュサーバーの合計数 | 5 |
| 接続されたクライアントインスタンスの合計数 | 20 |
| 1秒あたりの平均リクエスト数 / ノード | 300,000 |
| 合計リクエスト数 - キャッシュクラスター | 1,500,000 |
| % プロセッサ時間(最大) | 30% |
| システムメモリ | 6 GB |
| レイテンシ(マイクロ秒/キャッシュ操作) | 3~4マイクロ秒/操作 |
さらにアプリケーションインスタンスをいくつか実行して負荷を上げてみましょう。30秒あたりのリクエスト数もさらに増加します。XNUMXのクライアントインスタンスをすべて接続します。 NCache サーバー。
下のスクリーンショットを見ると、400,000秒あたりXNUMX万件のリクエストに成功していることがわかります。 NCache サーバーは5台あります NCache サーバーの数が増えるため、1秒あたり200万件のトランザクションが発生します。 NCache キャッシュクラスター。キャッシュ操作あたりの平均マイクロ秒数は3マイクロ秒未満です。また、システムメモリとプロセッサ時間はどちらも40~50%の使用率で、制限値をはるかに下回っています。
レイテンシは2~3マイクロ秒/オペレーションとなり、前回の結果から改善されました。フェッチと更新が混在し、CPUとメモリリソースが効率的に利用されていることがわかります。結論として、 NCache 線形に拡張可能です。では、スケーラビリティの数値を確認してみましょう。
| ステージ3 – 概要データシート | |
| クラスター内のキャッシュサーバーの合計数 | 5 |
| 接続されたクライアントインスタンスの合計数 | 30 |
| 1秒あたりの平均リクエスト数 / ノード | 400,000 |
| 合計リクエスト数 - キャッシュクラスター | 2,000,000 |
| % プロセッサ時間(最大) | 60% |
| システムメモリ | 6 GB |
| レイテンシ(マイクロ秒/キャッシュ操作) | 2~3マイクロ秒/操作 |
私たちはそれを実証することができました NCache 線形にスケーラブルであり、ベンチマークを実行した後に次の結果を達成できました。
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。