(0) exportieren Drucken
Alle erweitern

Überlegungen zur Leistung

Alle Service Bus for Windows Server-Messagingentitäten (Warteschlangen, Themen, Abonnements) werden in Containern gespeichert. Jeder Container ist nur einer Datenbank zugeordnet, die die Entität und deren Nachrichten physisch speichert. Eine Datenbank kann einen Container bedienen. Wenn ein neuer Container erstellt wird, wird außerdem eine neue Datenbank erstellt. Wenn eine Warteschlange oder ein Thema erstellt wird, weist Service Bus for Windows Server diese Entität einem Container zu. Alle Nachrichten werden in der Datenbank dieses Containers gespeichert. Alle Abonnements eines Themas werden im gleichen Container wie das Thema gespeichert.

Eine Service Bus for Windows Server-Farm besteht aus einem oder drei Knoten. Jeder Knoten führt einen Service Bus for Windows Server-Gatewaydienst und einen Service Bus for Windows Server-Brokerdienst aus. Jeder der Container wird von einem der Broker geladen. Service Bus for Windows Server versucht, die Container so gleichmäßig wie möglich auf alle verfügbaren Broker zu verteilen. Wenn ein Broker ausfällt, werden alle Container, die vom fehlerhaften Broker geladen wurden, auf die verbliebenen Broker verschoben. Alle Vorgänge, die eine bestimmte Entität betreffen, werden von dem Broker verarbeitet, der den Container geladen hat, der diese Entität enthält. Weitere Informationen finden Sie unter Service Bus for Windows Server-Architekturübersicht.

Leistungsrichtlinien

In diesem Abschnitt werden Leistungsoptimierungen behandelt, die Sie vornehmen können, um den Durchsatz zu verbessern.

Überlegungen zur Hardware

Der Gesamtdurchsatz einer Service Bus for Windows Server-Farm wird durch drei Faktoren eingeschränkt:

  1. Rechenleistung der Farmknoten.

  2. Rechenleistung und Festplattenkonfiguration der Computer mit SQL Server.

  3. Bandbreite der Netzwerkverbindung zwischen den Farmknoten und den Computern mit SQL Server.

TipTipp
Verwenden Sie einen dedizierten Computer für Ihre SQL Server-Datenbanken (nicht für einen der Farmknoten), um einen hohen Durchsatz zu erzielen.

Wenn Sie eine große Anzahl von Warteschlangen und Themen planen, sollten Sie mehrere Nachrichtencontainer einplanen, die für mehrere Computer mit SQL Server ausgeführt werden. Service Bus for Windows Server weist Nachrichtencontainer (Datenbanken) Farmknoten dynamisch zu. Die Zuordnung von Service Bus for Windows Server-Warteschlangen und -Themen (mit ihren Nachrichten) zu Datenbanken erfolgt jedoch erst beim Erstellen der Entität.

TipTipp
Verwenden Sie für optimalen Durchsatz mindestens so viele Container wie Knoten in der Farm vorhanden sind.

TipTipp
Planen Sie für eine große Anzahl von Warteschlangen und Themen drei Mal mehr Nachrichtencontainer als Farmknoten ein (erstellen Sie beispielsweise 9 Nachrichtencontainer für eine Farm mit drei Knoten).

TipTipp
Erstellen Sie Ihre Nachrichtencontainer, bevor Sie Service Bus for Windows Server-Warteschlangen und -Themen erstellen.

SQL Server-Optimierungen

Die Leistung der meisten Messagingszenarien wird durch die SQL Server-E/A vorgegeben. Berücksichtigen Sie die folgenden Punkte beim Optimieren des Computers mit SQL Server, der die Service Bus for Windows Server-Containerdatenbanken hostet.

  • Konfigurieren Sie SQL Server so, dass Protokolle und Daten auf verschiedenen Datenträgern gespeichert werden.

  • Optimieren Sie die SQL Server-Festplatten für Schreibleistung. Wenn der Server mit ausreichend Arbeitsspeicher ausgestattet ist, liest SQL Server selten Daten vom Datenträger. Wenn der Server mit mehr als zwei Datenträgern ausgestattet ist, erstellen Sie Stripedatenträger, die die Protokoll- und Datenspeicher enthalten.

  • Nehmen Sie eine Vorzuweisung von Speicherplatz für Protokoll- und Datendateien vor, und deaktivieren Sie automatisches Wachstum.

  • Konfigurieren Sie SQL Server so, dass eine Datendatei TempDB für jeden Prozessorkern vorhanden ist.

  • Ändern Sie die Größe der NTFS-Zuordnungseinheit in 64 KB.

Aktivieren Sie Weiterleitung.

Standardmäßig sendet ein Client Anforderungen an eines der Service Bus for Windows Server-Gateways. Das Gateway leitet die Anforderung an den Broker weiter, der den Container geladen hat, der die betreffende Entität enthält. Wenn die Weiterleitungsfunktion aktiviert ist, sendet der Client eine Weiterleitungsanforderung an das Service Bus for Windows Server-Gateway. Das Gateway antwortet mit der Adresse des Brokers. Der Client sendet alle Anforderungen direkt an den Broker. Legen Sie zum Aktivieren der Weiterleitungsfunktion die Eigenschaft EnableRedirect für die Factory auf true fest. Beispiel:

MessagingFactorySettings factorySettings = new MessagingFactorySettings();
factorySettings.NetMessagingTransportSettings.EnableRedirect = true;
MessagingFactory factory = MessagingFactory.Create("address", factorySettings);

Beachten Sie, dass der Weiterleitungsmechanismus nur für Anforderungen verfügbar ist, die über TCP gesendet werden. HTTP-Anforderungen durchlaufen immer ein Gateway. Beachten Sie außerdem, dass die Weiterleitungsfunktion mit einigen Lastenausgleichsmodulen nicht kompatibel ist.

Vergrößern des internen Caches

Das Vergrößern des Caches ermöglicht Service Bus for Windows Server-Brokerprozessen das Speichern einer größeren Menge von Daten im Arbeitsspeicher. Führen Sie zum Vergrößern der Cachestandardgröße von 500 MB auf 1 GB z. B. die folgenden PowerShell-Cmdlets auf einem der Service Bus for Windows Server-Farmknoten aus:

Set-SBRuntimeSetting  -Name messagecachesizeperentity -Value 1048576000
Stop-SBFarm
Start-SBFarm

Deaktivieren der Nachrichtenreihenfolge

Nachrichten, die an ein Thema gesendet werden, müssen in alle Abonnements verschoben werden. Dieser Vorgang kann beschleunigt werden, wenn Service Bus for Windows Server Nachrichten in Abonnements verschieben darf, ohne ihre Reihenfolge zu beachten. Leistungsverbesserungen mit einem Faktor von drei wurden beobachtet, wenn die Nachrichtenreihenfolge deaktiviert wurde.

Legen Sie zum Deaktivieren der Nachrichtenreihenfolge für ein Thema die Eigenschaft SupportOrdering der Klasse TopicDescription auf false fest. Beispiel:

TopicDescription topicDescription = new TopicDescription(topicName)
{
    SupportOrdering = False
};
namespaceManager.CreateTopic(topicDescription);

Szenarien

In diesem Abschnitt werden Empfehlungen zum Erzielen besserer Leistung für mehrere Schlüsselszenarien behandelt. Beachten Sie, dass die genauen Duchsatzzahlen basierend auf dem jeweiligen Szenario und der verwendeten Funktionen erheblich abweichen können.

Optimierung für einzelne (oder wenige) Entitäten mit hohem Durchsatz

Eine einzelne Warteschlange oder ein einzelnes Thema wird in einem einzelnen Container gespeichert, der auf einer einzelnen Warteschlange basiert und von einem einzelnen Broker verarbeitet wird. Wenn das TCP-Protokoll verwendet wird, ist nur einer der Farmknoten aktiv. Die anderen Knoten der Farm dienen als Sicherungsknoten, die das Wiederherstellen der Farm nach einem Knotenfehler ermöglichen. Get-WFServiceVersion und Add-SBHost

Benchmarks haben die folgenden Ergebnisse erbracht:

 

  Nachrichtendurchsatz Anzahl der Vorgänge (Senden und Empfangen)

Einzelne Warteschlange

20.000 Nachrichten/Sekunde

40.000 Nachrichten/Sekunde

Einzelnes Thema mit einem Abonnement

14.200 Nachrichten/Sekunde

28.400 Nachrichten/Sekunde

Einzelnes Thema mit 1.000 Abonnements

26 Nachrichten/Sekunde

26.000 Nachrichten/Sekunde

Die Benchmarks wurden in einer Farm mit drei Knoten und einem dedizierten SQL Server-Knoten ausgeführt. Das gleichzeitige Senden und Empfangen von Nachrichten mit einer Größe von 1 KB wurde gemessen. Alle Knoten waren mit vier Quad-Core CPUs (2,3 GHz), 24 GB RAM und 1 GBit/s Ethernet ausgestattet.

Optimierung für zahlreiche Entitäten mit hohem Durchsatz

Eine Farm mit drei Knoten sollte mindestens drei Container aufweisen. Idealerweise sind neun (oder mehr) Container vorhanden, damit die Farmknoten gleichmäßig geladen bleiben, wenn einer der Farmknoten ausfällt.

Unser Testsystem konnte 1.500 Warteschlangen verarbeiten, von denen jede einen Nachrichtendurchsatz (Senden und Empfangen) von einer Nachricht pro Sekunde aufwies.

Siehe auch


Builddatum:

2013-07-25

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft