Considérations relatives aux performances

Toutes les entités de messagerie Service Bus pour Windows Server (files d’attente, rubriques et abonnements) sont stockées dans des conteneurs. Chaque conteneur est associé à une seule base de données, qui stocke physiquement l’entité et ses messages. Une base de données peut servir un conteneur. Si un nouveau conteneur est créé, une base de données doit également être créée. Lorsqu’une file d’attente ou une rubrique est créée, le Service Bus pour Windows Server affecte cette entité à un conteneur. Tous les messages sont stockés dans la base de données de ce conteneur. Tous les abonnements à une rubrique sont stockés dans le même conteneur que la rubrique.

Une batterie de serveurs Service Bus pour Windows Server consiste en un ou trois nœuds. Chaque nœuds exécute un service de passerelle pour Service Bus pour Windows Server et un service broker pour Service Bus pour Windows Server. Chaque conteneur est chargé par l’un des brokers. Le Service Bus pour Windows Server tente de distribuer les conteneurs de manière aussi égale que possible entre les brokers disponibles. Si un broker ne fonctionne pas, tous les conteneurs chargés par ce broker sont déplacés dans les brokers restants. Toutes les opérations impliquant une entité particulière sont traitées par le broker aillant chargé le conteneur contenant cette entité. Pour plus d'informations, consultez Service Bus pour Windows Server Présentation de l'architecture.

Instructions relatives aux performances

Cette section traite des optimisations de performances que vous pouvez effectuer pour améliorer le débit.

Considérations relatives au matériel

Le débit total d’une batterie de serveurs Service Bus pour Windows Server est limité par trois facteurs :

  1. La puissance de calcul des nœuds de la batterie de serveurs.

  2. La puissance de calcul et la configuration du disque dur des ordinateurs SQL Server.

  3. La bande passante de la connexion réseau entre les nœuds de la batterie de serveurs et les ordinateurs SQL Server.

TipConseil
Pour obtenir un débit élevé, utilisez un ordinateur dédié pour vos bases de données SQL Server et non pas pour un des nœuds de la batterie de serveurs.

Si vous planifiez un grand nombre de files d’attentes et de rubriques, vous devez prévoir d’exécuter plusieurs conteneurs de messages sur plusieurs serveurs SQL. Tandis que Service Bus pour Windows Server affecte de façon dynamique des conteneurs de messages (bases de données) aux nœuds de batteries de serveurs, le placement des files d’attente et rubriques Service Bus pour Windows Server (avec leurs messages) sur les bases de données se produit lors de la création de l’entité.

TipConseil
Pour optimiser le débit, utilisez au moins autant de conteneurs qu’il y a de nœuds dans la batterie de serveurs.

TipConseil
Pour augmenter le nombre de files d’attentes et de rubriques, prévoyez d’avoir trois fois plus de conteneurs de messages que de nœuds de batterie de serveurs (par exemple, créez 9 conteneurs de messages pour 3 nœuds).

TipConseil
Créez vos conteneurs de messages avant de créer des files d’attente et des rubriques Service Bus pour Windows Server.

Optimisations de SQL Server

Les performances de la plupart des scénarios de messagerie sont liées à l’entrée/sortie de SQL Server. Considérez les points suivants lors du réglage du serveur SQL Server hébergeant les bases de données de conteneurs Service Bus pour Windows Server.

  • Configurez SQL Server pour que les journaux et les données soient stockés sur des disques différents.

  • Optimisez les disques durs SQL Server pour améliorer les performances d’écriture. Si le serveur dispose d’une mémoire suffisante, SQL Server lit rarement les données depuis le disque. Si le serveur est équipé de plus de deux disques, agrégez par bande les disques contenant les magasins de journaux et de données.

  • Préallouez de l’espace pour les fichiers de journaux et de fichiers, puis désactivez la croissance automatique.

  • Configurez SQL Server afin qu’il y ait un fichier de données TempDB pour chaque cœur de processeur.

  • Faites passer la taille d’unité d’allocation NTFS à 64 Ko.

Activer la redirection

Par défaut, un client envoie ses requêtes à l’une des passerelles Service Bus pour Windows Server. La passerelle transfère la requête au broker ayant chargé le conteneur contenant cette entité. Si la fonctionnalité de redirection est activée, le client envoie une requête de redirection à la passerelle Service Bus pour Windows Server. La passerelle répond avec l’adresse du broker. Le client envoie tous les requêtes directement au broker. Pour activer la fonctionnalité de redirection, définissez la propriété EnableRedirect pour la fabrique sur true. Par exemple :

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

Notez que le mécanisme de redirection est uniquement disponible pour les requêtes envoyées via TCP. Les requêtes HTTP passent toujours par une passerelle. Notez également que la fonction de redirection n’est pas compatible avec certains équilibrages de charge.

Augmentation de la taille du cache interne

L’augmentation de la taille du cache permet aux processus de broker Service Bus pour Windows Server de stocker plus de données en mémoire. Par exemple, pour faire passer la taille du cache par défaut de 500 Mo à 1 Go, exécutez les cmdlets PowerShell suivantes sur l’un des nœuds de la batterie de serveurs Service Bus pour Windows Server :

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

Désactivation du classement des messages

Les messages envoyés vers une rubrique doivent être déplacés vers tous les abonnements. Ce processus peut être accéléré si le Service Bus pour Windows Server est autorisé à déplacer les messages dans les abonnements hors d’usage. Un triplement des performances a été observé si le classement des messages est désactivé.

Pour désactiver le classement des messages d’une rubrique, définissez la propriété SupportOrdering de la classe TopicDescription sur false. Par exemple :

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

Scénarios

Cette section traite des recommandations visant à améliorer les performances pour différents scénarios clés. Notez que les chiffres exacts relatifs aux débits peuvent varier considérablement, selon le scénario et les fonctionnalités spécifiques utilisés.

Optimisation pour une seule (ou quelques) entité(s) avec un débit élevé

Une seule file d’attente ou rubrique est stocké dans un seul conteneur, basé sur une seule base de données et géré par un broker unique. Si le protocole TCP est utilisé, un seul des nœuds de la batterie de serveurs est actif ; les autres nœuds de la batterie de serveurs servent de nœuds de sauvegarde, permettant une récupération de la batterie de serveurs en cas de panne du nœud. Get-WFServiceVersion et Add-SBHost

Les différents test donnent les résultats suivants :

 

  Débit de messages Nombre d’opérations (envoi + réception)

File d’attente unique

20 000 messages/seconde

40 000 messages/seconde

Rubrique unique avec 1 abonnement

14 200 messages/seconde

28 400 messages/seconde

Rubrique unique avec 1000 abonnements

26 messages/seconde

26 000 messages/seconde

Les différents tests ont été effectués avec une batterie de serveurs a trois nœuds et un nœud dédié à SQL Server. Un envoi et une réception simultanés de messages d’une taille de 1 Ko ont été mesurés. Tous les nœuds étaient équipés de quatre processeurs quadruple cœur (2.3 GHz), 24 Go de RAM et une connexion Ethernet de 1 Go/s.

Optimisation pour plusieurs entités avec un débit élevé

Une batterie de serveurs de trois nœuds doit avoir au moins trois conteneurs. L’idéal serait d’avoir neuf conteneurs (ou plus), pour que la charge des nœuds de la batterie de serveurs reste équilibrée si l’un des nœuds tombe en panne.

Notre système de test a pu gérer 1500 files d’attente, ayant chacune un débit de messages (envoi + réception) de 1 message par seconde.

Voir aussi


Date de génération :

2013-07-25

Ajouts de la communauté

AJOUTER
Afficher: