Esporta (0) Stampa
Espandi tutto

Considerazioni relative alle prestazioni

Tutte le entità di messaggistica di Service Bus per Windows Server (code, argomenti, sottoscrizioni) sono memorizzate in contenitori. Ogni contenitore è associato a un solo database, in cui sono archiviati fisicamente l'entità e tutti i relativi messaggi. Un database può servire un solo contenitore. Se viene creato un nuovo contenitore, viene creato anche un nuovo database. Quando viene creato un argomento o una coda, Service Bus per Windows Server assegna tale entità a un contenitore. Tutti i messaggi vengono archiviati nel database di questo contenitore. Tutte le sottoscrizioni a un argomento vengono archiviate nello stesso contenitore dell'argomento.

Una farm di Service Bus per Windows Server è costituita da uno o tre nodi. Ogni nodo esegue un servizio gateway di Service Bus per Windows Server e un servizio broker di Service Bus per Windows Server. Ciascun contenitore viene caricato da uno dei broker. Service Bus per Windows Server tenta di distribuire i contenitori nel modo più uniforme possibile tra tutti i broker disponibili. In caso di errore di un broker, tutti i contenitori caricati da tale broker vengono spostati sui broker rimanenti. Tutte le operazioni che coinvolgono una particolare entità vengono elaborate dal broker che ha caricato il contenitore di tale entità. Per ulteriori informazioni, vedere Service Bus per Windows Server Panoramica dell'architettura.

Linee guida per le prestazioni

In questa sezione vengono illustrate le ottimizzazioni delle prestazioni che è possibile eseguire per migliorare la velocità effettiva.

Considerazioni relative all'hardware

La velocità effettiva totale di una farm di Service Bus per Windows Server è limitata da tre fattori:

  1. Potenza di elaborazione dei nodi della farm.

  2. Potenza di elaborazione e configurazione del disco rigido dei computer con SQL Server.

  3. Larghezza di banda della connessione di rete tra i nodi della farm e i computer con SQL Server.

TipSuggerimento
Per raggiungere una velocità effettiva elevata, utilizzare un computer dedicato per i database di SQL Server, non per uno dei nodi della farm.

Se è previsto un numero consistente di code e argomenti, è consigliabile pianificare l'esecuzione di più contenitori di messaggi su più computer con SQL Server. Service Bus per Windows Server assegna i contenitori di messaggi (database) ai nodi della farm in modo dinamico, ma l'inserimento di code e argomenti (con i relativi messaggi) di Service Bus per Windows Server nei database avviene al momento della creazione dell'entità.

TipSuggerimento
Per una velocità effettiva ottimale, utilizzare almeno un numero di contenitori pari a quello dei nodi nella farm.

TipSuggerimento
Per un numero elevato di code e argomenti, prevedere un numero di contenitori di messaggi tre volte superiore al numero dei nodi della farm. Ad esempio, per una farm con 3 nodi, creare 9 contenitori di messaggi.

TipSuggerimento
Creare i contenitori di messaggi prima delle code e degli argomenti di Service Bus per Windows Server.

Ottimizzazioni di SQL Server

Le prestazioni della maggior parte degli scenari di messaggistica dipendono dall'I/O di SQL Server. Quando si ottimizza il computer con SQL Server che ospita i database dei contenitori di Service Bus per Windows Server, tenere presente quanto segue.

  • Configurare SQL Server in modo che i log e i dati vengano archiviati su dischi diversi.

  • Ottimizzare i dischi rigidi del computer con SQL Server per le prestazioni di scrittura. Se il server è dotato di memoria sufficiente, SQL Server legge raramente i dati dal disco. Se nel server sono presenti più di due dischi, eseguire lo striping dei dischi che contengono gli archivi di log e dati.

  • Eseguire l'allocazione preliminare dello spazio per i file di log e dati e disabilitare l'aumento automatico delle dimensioni.

  • Configurare SQL Server in modo che sia presente un file di dati TempDB per ogni core del processore.

  • Impostare la dimensione dell'unità di allocazione NTFS su 64 KB.

Abilitare il reindirizzamento

Per impostazione predefinita, un client invia la propria richiesta a uno dei gateway di Service Bus per Windows Server. Il gateway inoltra la richiesta al broker che ha caricato il contenitore dell'entità. Se la funzionalità di reindirizzamento è abilitata, il client invia una richiesta di reindirizzamento al gateway di Service Bus per Windows Server. Il gateway risponde con l'indirizzo del broker. Il client invia tutte le richieste direttamente al broker. Per abilitare la funzionalità di reindirizzamento, impostare la proprietà EnableRedirect per la factory su true come indicato di seguito:

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

Tenere presente che il meccanismo di reindirizzamento è disponibile solo per le richieste inviate tramite TCP. Le richieste HTTP passano sempre attraverso un gateway. Si noti inoltre che la funzionalità di reindirizzamento non è compatibile con alcuni servizi di bilanciamento del carico.

Aumentare la dimensione della cache interna

Se si aumenta la dimensione della cache, i processi del broker di Service Bus per Windows Server possono archiviare più dati in memoria. Ad esempio, per aumentare la dimensione predefinita della cache da 500 MB a 1 GB, eseguire i seguenti cmdlet di PowerShell su uno dei nodi della farm di Service Bus per Windows Server:

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

Disabilitare l'ordinamento dei messaggi

I messaggi inviati a un argomento devono essere spostati in tutte le sottoscrizioni. È possibile accelerare questo processo consentendo a Service Bus per Windows Server di spostare i messaggi nelle sottoscrizioni senza un ordine preciso. Con l'ordinamento dei messaggi disabilitato sono state osservate prestazioni tre volte superiori.

Per disabilitare l'ordinamento dei messaggi per un argomento, impostare la proprietà SupportOrdering della classe TopicDescription su false come indicato di seguito:

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

Scenari

In questa sezione vengono forniti consigli per ottenere prestazioni migliori in alcuni scenari significativi. I dati relativi alla velocità effettiva possono variare notevolmente a seconda dello scenario specifico e delle particolari funzionalità utilizzate.

Ottimizzazione per una o poche entità con velocità effettiva elevata

Ogni coda o argomento viene archiviato in un singolo contenitore, che è basato su un singolo database e gestito da un singolo broker. Se viene utilizzato il protocollo TCP, uno solo del nodi della farm è attivo. Gli altri nodi della farm agiscono da nodi di backup che consentono il ripristino della farm in caso di errore di un nodo. Get-WFServiceVersion e Add-SBHost

Dai benchmark sono emersi i seguenti risultati:

 

  Velocità effettiva dei messaggi Numero di operazioni (invio + ricezione)

Coda singola

20.000 messaggi/secondo

40.000 messaggi/secondo

Singolo argomento con 1 sottoscrizione

14.200 messaggi/secondo

28.400 messaggi/secondo

Singolo argomento con 1000 sottoscrizioni

26 messaggi/secondo

26.000 messaggi/secondo

I benchmark sono stati eseguiti con una farm a tre nodi e un nodo SQL Server dedicato. Sono stati misurati l'invio e la ricezione simultanea di messaggi da 1 KB. Tutti i nodi erano dotati di CPU quad-core (da 2,3 GHz), 24 GB di RAM e 1GBit/s Ethernet.

Ottimizzazione per numerose entità con velocità effettiva elevata

Una farm a tre nodi dovrebbe includere almeno tre contenitori. In condizioni ideali sono presenti nove o più contenitori, in modo che i nodi della farm rimangano ugualmente caricati in caso di errore di uno dei nodi della farm.

Il sistema di test utilizzato è riuscito a gestire 1500 code, ciascuna con una velocità effettiva (invio + ricezione) di 1 messaggio al secondo.

Vedere anche


Data di compilazione:

2013-07-25

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft