質問

JMeterを使用して、アプリケーションのパフォーマンスをテストしています。しかし、JMeterから20個のリクエストを送信すると、結果としてsqlサーバーに20個の新しいレコードが追加されるはずですが、5個の新しいレコードが見つかりました。つまり、SQLサーバーは他のリクエストを破棄します(ログを取得したため) 、挿入新しいレコードがSQLサーバーに送信されることを確認してください。)

アイデアはありますか? SQLサーバーが1秒あたりに処理できる要求のしきい値はいくつですか?または、何らかの設定を行う必要がありますか?

ええ、私のアプリケーションで試しましたが、5つのリクエストしか受け入れられていないようで、設定方法がわからないので、さらにリクエストを受け入れることができます。

役に立ちましたか?

解決

1秒あたりのリクエスト数が、挿入を破棄するSQLサーバーに直接関係しているとは思いません。おそらく、ロールバックするか、挿入のコミットに失敗するアプリケーションロジックエラーがあります。または、アプリケーションが並行性の処理に失敗し、制約に違反するデータを挿入します。デッドロックについてもサーバーログを確認します。

他のヒント

ログにSQLプロファイラーまたはLINQデータコンテキストを使用して、サーバーに実際に送信されたものを確認し、問題を特定します。

次のようにデータコンテキストログを有効にします。

datacontext.Log = Console.Out;

補足として、SQL Serverで1秒間に10 000トランザクションを処理しているので、それが問題だとは思いません。

これは、実行しているクエリの種類に大きく依存します。すでにバッファ内にあるデータを要求する多くのクエリを実行できるため、ディスクの読み取りアクセスが不要になるか、実際にディスクアクセスが必要な読み取りを行うことができます。データベースが小さく、十分なメモリがある場合、すべてのデータが常にメモリにある可能性があります。アクセスは非常に高速になり、1秒あたり100件以上のクエリを取得できます。ディスクを読み取る必要がある場合は、ハードウェアに依存しています。 UltraSCSI-160ドライブを搭載したUltraSCSI-160コントローラーを選択しました。これは、PCタイプのプラットフォームで入手できる最速のオプションです。私は毎晩約75'000件のレコードを処理しています(別のサーバーからダウンロードされます)。処理するレコードごとに、プログラムは約4〜10個のクエリを実行して、新しいレコードを正しい「スロット」に入れます。プロセス全体には約3分かかります。これは、768 MBのRAMを搭載した850 MHz AMD Athlonマシンで実行しています。 これにより速度についての少しの指標が得られることを願っています。

SQL Serverおよびその他のRDBMSのベンチマークテストを取得するには、 Processing Performance Council Web

にアクセスしてください。

SQL Serverプロファイラーを使用して、クエリの実行方法を確認することもできます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top