ユーザーからのリクエストを取得し、データ (2 つのパラメーター) をテーブル エンティティに渡し、それらを cloudtables (行を使用) に入れるクラウド サービスがありBatchTableOperations
ますInsertOrReplace
。その方法は単純で、軽量かつ高速に保とうとします (パーティション キーとパーティション キー/行キーのペアの問題は制御されます)。
約 10,000 ~ 15,000 の「同時」リクエストに対応するには、クラウド サービスが必要です。最初にキューを使用してユーザー データを取得し、ワーカー ロールを使用してキュー メッセージを処理し、それらを SQL に入れました。エラーは発生せず、データが失われることもありませんでしたが、処理が遅すぎてニーズに応えられませんでした。現在、データをより高速に処理できるかどうかを確認するために、クラウド テーブルを試しています。リクエストの量が少ないと処理は速くなりますが、リクエストが増えるとエラーが発生し、データが失われます。
ファイアウォールがリクエストを停止するのを防ぐために、クラウド サービスがオンになっているのと同じ仮想ネットワークでテスト用にいくつかの仮想マシンをセットアップしました。1000 スレッドと 5 ループの jMeter テストでは、0% のエラーが発生します。2 つの仮想マシンからの同じテストも問題ありません。3 番目のマシンを追加すると、最初のエラーが発生します (0.14% の要求で、サービスを利用できない 503 エラーが発生します)。10 台のマシン、1000 のスレッド、および 2 つのループからの大規模なテストでは、大規模な 503 および/または接続拒否エラーが発生します。クラウド サービスを最大 10 インスタンスまでスケーリングしようとしましたが、結果にほとんど違いはありません。
私はこの問題に少し行き詰まっており、適切なツールで問題に焦点を合わせているかどうかわかりません. どんな提案でも大歓迎です。