2009-12-01 5 views
6

Ich verwende JMeter, um die Leistung unserer Anwendung zu testen. aber ich fand, wenn ich 20 Anfragen von JMeter sende, mit diesem sollte der Grund 20 neue Datensätze in den SQL-Server hinzufügen, aber ich finde nur 5 neue Datensätze, was bedeutet, dass SQL Server die anderen Anforderungen verwerfen (weil ich ein Protokoll nahm und stellen Sie sicher, dass die neuen Datensätze einfügen an Sql-Server gesendet werden.)Wie viele Anfragen kann SQL Server pro Sekunde verarbeiten?

Hat jemand Ideen? Wie hoch ist der Schwellenwert für die Anzahl der Anfragen, die der SQL Server pro Sekunde verarbeiten kann? Oder muss ich etwas konfigurieren?

Ja, in meiner Anwendung habe ich versucht, aber es scheint, dass nur 5 Anfragen akzeptiert werden, ich weiß nicht, wie zu konfigurieren, dann kann es mehr akzeptieren.

+0

Interessantes Thema, ich bin auch neugierig. – Ben

+0

+1 ja, ruhig interessant ... freue mich auf die Antwort. – Saar

+2

Ich musste darüber lachen. In jeder Sekunde erhält Stack Overflow tausende Batch-Anfragen. Wir haben einen Client, der über 100.000 Batch-Anfragen pro Sekunde rund um die Uhr erledigt. –

Antwort

6

Ich bin nicht davon überzeugt, dass die Anzahl der Anfragen pro Sekunde direkt an den SQL-Server weitergeleitet wird, der Ihre Einfügungen wegwirft. Möglicherweise gibt es einen Anwendungslogikfehler, der die Einsätze rückgängig macht oder fehlschlägt. Oder die Anwendung behandelt die Parallelität nicht und fügt Daten ein, die die Einschränkungen verletzen. Ich würde die Serverprotokolle auch nach Deadlocks durchsuchen.

+0

Ich verwende linq und .net, um Anfragen einzufügen, aber kann keine Ausnahme fangen – MemoryLeak

3

Dies ist sehr davon abhängig, welche Art von Fragen, die Sie tun zu bekommen. Sie können viele Abfragen haben, die Daten anfordern, die sich bereits in einem Puffer befinden, so dass kein Lesezugriff auf die Festplatte erforderlich ist oder Lesevorgänge möglich sind, für die tatsächlich ein Festplattenzugriff erforderlich ist. Wenn Ihre Datenbank klein ist und Sie über genügend Arbeitsspeicher verfügen, können Sie alle Daten jederzeit im Speicher haben - der Zugriff wäre sehr schnell und Sie könnten mehr als 100 Abfragen pro Sekunde erhalten. Wenn Sie eine Diskette lesen müssen, sind Sie von Ihrer Hardware abhängig. Ich habe mich für einen UltraSCSI-160-Controller mit UltraSCSI-160-Laufwerken entschieden, die schnellste Option, die Sie auf einer PC-Typ-Plattform erhalten können. Ich verarbeite jede Nacht ungefähr 75'000 Einträge (sie werden von einem anderen Server heruntergeladen). Für jeden Datensatz, den ich verarbeite, macht das Programm ungefähr 4 - 10 Abfragen, um den neuen Datensatz in den richtigen "Slot" zu stellen. Der gesamte Vorgang dauert ca. 3 Minuten. Ich betreibe dies auf einem 850 MHz AMD Athlon Rechner mit 768 MB RAM. Hoffe das gibt Ihnen ein wenig Hinweis auf die Geschwindigkeit.

+0

Ich benutze nur linq, um Datensätze einzufügen. – MemoryLeak

3

Verwenden Sie entweder SQL Profiler oder den LINQ-Datenkontext für die Protokollierung, um zu sehen, was tatsächlich an den Server gesendet wurde, und ermitteln Sie anschließend, um welches Problem es sich handelt.

den Protokolldatenkontext wie folgt aktivieren:

datacontext.Log = Console.Out; 

Als Randbemerkung, ich habe in SQL Server pro Sekunde 10 000 Transaktionen wurde die Verarbeitung, so dass ich glaube nicht, dass das Problem ist.

0

Sie können auch Sql Server-Profil verwenden, um zu überprüfen, wie Ihre Abfragen ausgeführt werden