8

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

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

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

4

6 に答える 6

8

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

于 2009-12-01T08:49:37.803 に答える
6

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

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

datacontext.Log = Console.Out;

ちなみに、私は SQL Server で 1 秒あたり 10,000 トランザクションを処理しているので、それが問題だとは思いません。

于 2009-12-01T09:40:17.197 に答える
5

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

于 2009-12-01T08:58:28.953 に答える
0

SQL Server およびその他の RDBMS のベンチマーク テストを取得するには、Processing Performance Council Webにアクセスしてください。

于 2009-12-01T08:52:12.523 に答える
0

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

于 2009-12-01T09:51:24.300 に答える