2009-12-01 10 views
6

私はアプリケーションのパフォーマンスをテストするためにJMeterを使用しています。しかし、私はJMeterから20件のリクエストを送信したときにこれが理由で結果が20の新しいレコードをSQLサーバーに追加する必要がありましたが、5つの新しいレコードが見つかりました。つまり、SQLサーバーは他のリクエストを破棄します新しいレコードを挿入することがSQL Serverに送信されることを確認してください)。1秒あたりのSQL Serverの処理数はいくつですか?

アイデアはありますか? SQL Serverが1秒あたりに処理できるリクエストのしきい値は何ですか?または、私はいくつかの設定を行う必要がありますか?

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

+0

興味深いトピックですが、私も不思議です。 – Ben

+0

+1はい、静かな面白い...答えを楽しみにしています。 – Saar

+2

これを笑っていた。任意の秒で、スタックオーバーフローは何千ものバッチ要求を取得します。私たちは、1秒間に100k回以上のバッチ要求を処理するクライアントを用意しています。 –

答えて

6

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

+0

私はlinqと.netを使ってリクエストを挿入しますが、例外をキャッチすることはできません – MemoryLeak

3

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

+0

私はちょうどlinqを使ってレコードを挿入します。 – MemoryLeak

3

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

このようなデータコンテキストログを有効にします。注意点として

datacontext.Log = Console.Out; 

を、私は、SQL Serverで毎秒10件の000トランザクションを処理してきたので、私はそれが問題ではないと思います。

0

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

関連する問題