Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento fornisce informazioni su come usare lo strumento Microsoft BizTalk LoadGen 2007 con BizUnit per automatizzare i test di prestazioni e stabilità di una soluzione BizTalk Server.
Test delle prestazioni di BizTalk Server, procedura dettagliata
Prima di analizzare come automatizzare i test delle prestazioni di BizTalk Server, è utile sapere quali passaggi vengono in genere eseguiti in un test delle prestazioni. I passaggi seguenti sono rappresentativi di un processo di test delle prestazioni di BizTalk Server "tipico":
Creare una directory dei risultati del test per archiviare i risultati e i dati raccolti, ad esempio registri eventi, log di traccia, dati di Performance Monitor.
Cancellare i registri eventi in tutti i server all'interno dell'ambiente di test.
Arresta tutte le istanze dell'host BizTalk.
Arrestare tutte le istanze di IIS che eseguono host BizTalk isolati, ad esempio i gestori dell'adattatore di ricezione SOAP e HTTP.
Riavviare tutte le istanze di SQL Server usate dai computer che eseguono BizTalk Server.
Pulire il database MessageBox per assicurarsi che non siano presenti dati rimanenti dalle esecuzioni dei test precedenti. Questo è importante perché qualsiasi dato rimanente potrebbe alterare i risultati dei test.
Avvia le istanze dell'host BizTalk.
Avviare i contatori di Performance Monitor pertinenti in tutti i server nell'ambiente di test.
Inviare messaggi "priming" tramite il sistema per inizializzare le cache di sistema.
Dopo l'elaborazione dei messaggi priming, tenere traccia dell'ora di inizio del test in un database dei risultati dei test di SQL Server.
Avviare il test delle prestazioni avviando tutti gli agenti di test LoadGen.
Attendere il completamento del test. Spesso questa operazione può essere eseguita sistematicamente misurando il valore di un contatore di Performance Monitor, ad esempio la lunghezza della coda host.
Tenere traccia dell'ora di fine del test in un database dei risultati del test SQL.
Arrestare i contatori di Performance Monitor pertinenti in tutti i server nell'ambiente di test.
Salvare i dati di test nella directory dei risultati del test creata in precedenza.
Eseguire tutte le operazioni di pulizia necessarie per l'esecuzione successiva del test.
Ognuno dei passaggi elencati può essere automatizzato tramite BizUnit. Usando gli asset dei passaggi di test esistenti forniti da BizUnit, è possibile generare rapidamente e facilmente un test delle prestazioni automatizzato per una soluzione BizTalk Server. Uno dei principali vantaggi dell'automazione dei test delle prestazioni tramite BizUnit è la flessibilità necessaria per eseguire i test durante la notte, vale a dire che i risultati sono pronti per l'analisi al mattino. Ciò riduce notevolmente il carico di lavoro dei test delle prestazioni in un team di progetto.
Strumento Microsoft BizTalk LoadGen 2007
Lo strumento BizTalk LoadGen 2007 (LoadGen) è uno strumento di test di carico sviluppato dal team di test di stress e prestazioni nel gruppo di prodotti BizTalk Server 2006. LoadGen è stato progettato per definire in modo rapido, semplice e affidabile test di carico che simulano volumi di messaggi a livello di produzione. LoadGen è multithreading, basato sulla configurazione e supporta più trasporti. Il gruppo di prodotti BizTalk usa LoadGen su base giornaliera; pertanto è possibile avere un elevato grado di attendibilità che lo strumento sia durevole, adatto allo scopo e in grado di simulare un'ampia gamma di scenari BizTalk.
LoadGen usa una progettazione modulare costituita da tre livelli: presentazione, framework e componente. Il livello di presentazione è costituito da un driver della riga di comando, responsabile della guida del framework. Il livello framework legge un file di configurazione e quindi esegue i componenti specificati. Il livello componente è costituito da tre tipi di componenti: generatori di carico, creatori di messaggi e controller del flusso. Ognuno di questi componenti è estendibile, quindi è possibile crearne di personalizzati e collegarli a LoadGen per soddisfare le esigenze dello scenario. Poiché LoadGen è stato sviluppato dal gruppo di prodotti BizTalk Server, è necessario verificare che i componenti predefiniti soddisfino la maggior parte dei requisiti di test di carico. Ognuno di questi componenti è descritto in modo più dettagliato qui.
I generatori di carico sono responsabili della trasmissione dei messaggi tramite un trasporto specifico. I generatori di carico vengono forniti per i trasporti seguenti:
Documento
Protocollo HTTP
MQSeries
MSMQLarge
MSMQ
Sapone
Miglioramenti dei servizi Web (WSE)
Windows SharePoint Services (WSS)
Windows Communication Foundation (WCF)
Gli autori di messaggi sono un componente facoltativo che può essere usato quando è necessario generare messaggi che contengono dati univoci. Gli autori di messaggi usano una delle due modalità di creazione; sincrona e asincrona. Se viene specificata la modalità di creazione dei messaggi sincrona, LoadGen usa solo un singolo thread per creare messaggi per garantire che ogni messaggio contenga un payload univoco. Anche se la modalità sincrona garantisce dati univoci all'interno di ogni messaggio, questa modalità limita anche la scalabilità. LoadGen fornisce anche creatori di messaggi asincroni che usano più thread di esecuzione; Ciò consente a LoadGen di soddisfare la frequenza dei messaggi di destinazione (perché può semplicemente creare più thread). In modalità asincrona, l'autore di messaggi può essere configurato per modificare in modo casuale i dati per ogni singolo messaggio. Tuttavia, poiché usa più thread, non garantisce che tutti i messaggi generati durante il test contengano un payload univoco.
I controller di regolazione assicurano che i messaggi vengano trasmessi a una velocità costante attraverso la regolazione dei generatori di carico durante l'esecuzione del test. LoadGen espone anche una limitazione personalizzata, che consente di controllare il flusso dei messaggi in base a criteri come:
Numero di file in una cartella
Numero di righe in una tabella di database
Profondità di una coda di messaggi MSMQ o MQSeries
Lo strumento Microsoft BizTalk LoadGen 2007 è disponibile per il download.
File di configurazione LoadGen di esempio
Tutte le informazioni di configurazione loadGen vengono archiviate in un file xml. Il file di configurazione LoadGen contiene un <elemento CommonSection> che configura le impostazioni predefinite per tutte le attività LoadGen nello scenario LoadGen. Il file di configurazione LoadGen può contenere anche uno o più <elementi Section> che forniscono le impostazioni di configurazione per un'attività LoadGen specifica. Le voci in un <elemento Section>, sostituiscono i valori predefiniti specificati nell'elemento <CommonSection>.
Il file di configurazione LoadGen di esempio seguente è una versione leggermente modificata del file di configurazione di esempio FileToFileLG.xml incluso nella sottodirectory \ConfigFiles\ConsoleConfigFiles della directory di installazione loadGen. Questo test invia 25 messaggi <LotSizePerInterval> ogni 200 millisecondi <SleepInterval>, 5 thread per generatore di carico <NumThreadsperSection> e arresterà il test di carico dopo che sono stati inviati 5000 messaggi <NumFiles>.
Il controller di limitazione delle richieste di file viene specificato nella <sezione ThrottleController> . Il valore di <ThresholdRange> è impostato su 1000-2000, il che significa che se il percorso del file C:\Scenarios\FileToFile\Receive (parametri) ha meno di 1000 o più di 2000 file, il controller di limitazione limita il generatore di file e aumenta/diminuisce il carico in base alle esigenze. Il numero di file nel percorso del file verrà controllato ogni 1000 millisecondi <SleepInterval>. L'elemento <FileSection> definisce le proprietà per i messaggi da inviare dai generatori di carico. Il file <FileToFileLG.xml SrcFilePath> verrà copiato da LoadGen nel filedrop C:\Scenarios\FileToFile\Receive <DstFilePath>. Il trasporto di file viene usato qui perché si tratta del trasporto predefinito specificato nell'elemento <Transport Name> all'interno dell'elemento <CommonSection> .
Attenzione
Questo esempio o materiale sussidiario fa riferimento a informazioni riservate, ad esempio una stringa di connessione o un nome utente e una password. Non inserire mai questi valori come valori codificati nel codice e assicurati di proteggere i dati riservati utilizzando l'autenticazione più sicura disponibile. Per altre informazioni, consultare la documentazione seguente:
<LoadGenFramework>
<CommonSection>
<LoadGenVersion>2</LoadGenVersion>
<OptimizeLimitFileSize>204800</OptimizeLimitFileSize>
<NumThreadsPerSection>5</NumThreadsPerSection>
<SleepInterval>200</SleepInterval>
<LotSizePerInterval>25</LotSizePerInterval>
<RetryInterval>10000</RetryInterval>
<StopMode Mode="Files">
<NumFiles>5000</NumFiles>
</StopMode>
<Transport Name="FILE">
<Assembly>FileTransport.dll/FileTransport.FileTransport</Assembly>
</Transport>
<ThrottleController Mode="Custom">
<Monitor Name="File">
<Assembly>FileMonitor.dll/DropLocationFileMonitor.DropLocationFileMonitor</Assembly>
<ThresholdRange>1000-2000</ThresholdRange>
<SleepInterval>1000</SleepInterval>
<Parameters>C:\Scenarios\FileToFile\Receive</Parameters>
</Monitor>
<ThrottleCondition>File</ThrottleCondition>
</ThrottleController>
</CommonSection>
<Section Name="FileSection">
<SrcFilePath>C:\LoadGen\ConfigFiles\ConsoleConfigFiles\FileToFileLG.xml</SrcFilePath>
<DstLocation>
<Parameters>
<DstFilePath>C:\Scenarios\FileToFile\Receive</DstFilePath>
</Parameters>
</DstLocation>
</Section>
</LoadGenFramework>
Utilizzare BizUnit per gestire LoadGen
BizUnit fornisce LoadGenExecuteStep per facilitare i test automatizzati di prestazioni e stabilità. La fase TestExecution di un file di configurazione BizUnit di esempio che usa LoadGenExecuteStep è illustrato nell'esempio di codice seguente. Si noti che questo passaggio accetta un singolo parametro di configurazione, ovvero il percorso del file di configurazione LoadGen.
<TestCase testName="Test_LoadGen">
<TestSetup>
</TestSetup>
<TestExecution>
<TestStep assemblyPath="" typeName="BizUnit.LoadGenExecuteStep, BizUnit.LoadGenSteps">
<LoadGenTestConfig>..\..\..\PerfGuideFiletoFile.xml</LoadGenTestConfig>
</TestStep>
</TestExecution>
<!-- Test cleanup: test cases should always leave the system in the state they found it -->
<TestCleanup>
</TestCleanup>
</TestCase>
Nella parte restante di questo argomento viene descritto il file di configurazione per un test case BizUnit che automatizza i test delle prestazioni con LoadGen.
Annotazioni
Questo file di configurazione può essere usato come modello per integrare rapidamente BizUnit e LoadGen come parte dei test delle prestazioni. Prima di eseguire questo test case, è necessario personalizzare il file di configurazione per l'ambiente in uso. Le sezioni del file di configurazione che devono essere personalizzate sono indicate di conseguenza.
Per iniziare, specificare un valore per il parametro testName appropriato per la soluzione BizTalk.
<TestCase testName="Performance-Guide-Sample-Loadgen-Test">
Aggiungere quindi le variabili di contesto alla fase TestSetup . A queste variabili di contesto verrà fatto riferimento per tutta la durata del test case. Per usare questo file di configurazione, modificare i valori specificati per TestCaseResultsDir (C:\Dev Work\Perf Guide Demos\PerfResults\) e Machine (BIZTALKADMIN01) in modo che corrispondano all'ambiente.
<TestSetup>
<!-- Context property: name of test run -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="TestRunName">
<ItemTest takeFromCtx="BizUnitTestCaseName"></ItemTest>
<ItemTest>_%DateTime%</ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: name of test directory to store results -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="TestCaseResultsDir">
<ItemTest>C:\Dev Work\Perf Guide Demos\PerfResults\</ItemTest>
<ItemTest takeFromCtx="TestRunName"></ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: perfmon log file -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="PerfMonFilePath">
<ItemTest takeFromCtx="TestCaseResultsDir"></ItemTest>
<ItemTest>\PerfCounters.blg</ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: destintation for app event log on test computer -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="DestPath- BIZTALKADMIN01-AppEventLog">
<ItemTest takeFromCtx="TestCaseResultsDir"></ItemTest>
<ItemTest> BIZTALKADMIN01_ApplicationLog.evt</ItemTest>
</ContextItem>
</TestStep>
<!-- Clear the application event log on test computer -->
<TestStep assemblyPath="" typeName="BizUnit.EventLogClearStep">
<Machine>BIZTALKADMIN01</Machine>
<EventLog>Application</EventLog>
</TestStep>
<!-- Create the directory to save all the test results -->
<TestStep assemblyPath="" typeName="BizUnit.CreateDirectory">
<DirectoryName takeFromCtx="TestCaseResultsDir" ></DirectoryName>
</TestStep>
</TestSetup>
Dopo aver completato la fase TestSetup , si entra nella fase TestExecution . Il primo passaggio consiste nell'arrestare le istanze dell'host BizTalk. È necessario aggiungere una sezione BizUnit.HostConductorStep separata per ogni istanza host distinta. Se si usa questo file di configurazione nell'ambiente, sarà necessario immettere anche i valori appropriati per HostInstanceName, Server, Accesso e Password.
<TestExecution>
<!-- Step 1: Stop BizTalk Hosts -->
<TestStep assemblyPath="" typeName="BizUnit.HostConductorStep, BizUnit.BizTalkSteps">
<Action>stop</Action>
<HostInstanceName>BizTalkServerApplication</HostInstanceName>
<Server>BizTalkAdmin01</Server>
<Logon>ServerName\Administrator</Logon>
<PassWord>Pass@word1</PassWord>
<GrantLogOnAsService>true</GrantLogOnAsService>
</TestStep>
Dopo aver arrestato tutte le istanze host, si pulisce il database MessageBox BizTalk usando la stored procedure bts_CleanupMsgBox. Per usare questo passaggio, è necessario modificare il valore per ConnectionString in modo che corrisponda all'ambiente in uso.
<!-- Step 2: Clean Up MessageBox -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=BizTalkMsgBoxDb;server=BIZTALKADMIN01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>[dbo].[bts_CleanupMsgbox]</RawSQLQuery>
</SQLQuery>
</TestStep>
Il passaggio 3 della fase TestExecution avvia i contatori di Performance Monitor (PerfMon) specificati in un file modello. Un file di modello di esempio è elencato sotto l'esempio BizUnit.PerfmonCountersStep seguente. Per usare il file modello, è necessario modificare il valore specificato per CountersListFilePath in modo che corrisponda all'ambiente. Modificare il file del modello di contatore di Monitoraggio prestazioni di esempio in modo da includere eventuali contatori PerfMon che si desidera monitorare o rimuovere eventuali contatori non rilevanti per lo scenario.
<!-- Step 3: Start Perfmon counters -->
<TestStep assemblyPath="" typeName="BizUnit.PerfmonCountersStep">
<PerfmonAction>Start</PerfmonAction>
<CounterSetName>PerfGuidePerfmonCounters</CounterSetName>
<CountersListFilePath>C:\Dev Work\Perf Guide Demos\Test_06_PerfCounters.txt</CountersListFilePath>
<SampleInterval>5</SampleInterval>
<PerfmonLogFilePath takeFromCtx="PerfMonFilePath"></PerfmonLogFilePath>
</TestStep>
File di modello di contatore di Performance Monitor di esempio (Test_06_PerfCounters.txt a cui fa riferimento BizUnit.PerfmonCountersStep):
\Processor(*)\*
\Process(*)\*
\Memory\*
\PhysicalDisk(*)\*
\System\Context Switches/sec
\System\Processor Queue Length
\BizTalk:FILE Receive Adapter(*)\*
\BizTalk:File Send Adapter(*)\*
\BizTalk:FTP Receive Adapter(*)\*
\BizTalk:FTP Send Adapter(*)\*
\BizTalk:HTTP Receive Adapter(*)\*
\BizTalk:HTTP Send Adapter(*)\*
\BizTalk:Message Agent(*)\*
\BizTalk:Messaging(*)\*
\BizTalk:Message Box:General Counters(*)\*
\BizTalk:Message Box:Host Counters(*)\*
\BizTalk:Messaging Latency(*)\*
\BizTalk:SOAP Receive Adapter(*)\*
\BizTalk:SOAP Send Adapter(*)\*
\BizTalk:TDDS(*)\*
\XLANG/s Orchestrations(*)\*
A questo punto si avviano le istanze host di BizTalk Server. È necessario aggiungere una sezione BizUnit.HostConductorStep separata per ogni istanza host distinta(distinct include più istanze di un host tra server). Se si usa questo file di configurazione nell'ambiente, sarà necessario immettere anche i valori appropriati per HostInstanceName, Server, Accesso e Password.
<!-- Step 4: Start BizTalk Hosts -->
<TestStep assemblyPath="" typeName="BizUnit.BizTalkSteps.HostConductorStep, BizUnit.BizTalkSteps, Version=3.0.0.0, Culture=neutral, PublicKeyToken=7eb7d82981ae5162">
<Action>start</Action>
<HostInstanceName>BizTalkServerApplication</HostInstanceName>
<Server>BizTalkAdmin01</Server>
<Logon>ServerName\Administrator</Logon>
<PassWord>Pass@word1</PassWord>
<GrantLogOnAsService>true</GrantLogOnAsService>
</TestStep>
Passaggio 5 "prepara" il sistema inviando un paio di messaggi a BizTalk Server usando BizUnit.LoadGenExecuteStep; modificare il valore del parametro LoadGenTestConfig in modo che corrisponda all'ambiente.
<!-- Step 5: Send Priming messages -->
<TestStep assemblyPath="" typeName="BizUnit.LoadGenExecuteStep, BizUnit.LoadGenSteps">
<LoadGenTestConfig>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</LoadGenTestConfig>
</TestStep>
Il passaggio 6 scrive il file di configurazione LoadGen in memoria in modo che possa quindi essere scritto nel database dei risultati del test al termine del test.
<!-- Step 6: Read loadgen file into context variable -->
<TestStep assemblyPath="" typeName="BizUnit.FileReadAndLoadToContext">
<FilePath>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</FilePath>
<ContextPropertyName>LoadGenFileContent</ContextPropertyName>
</TestStep>
A questo punto si scrive l'ora di inizio del test in un database dei risultati del test. Modificare i parametri ConnectionString e RawSQLQuery in modo che corrispondano all'ambiente in uso.
<!-- Step 7: Update test results DB with test start time -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=TestResults;server=BizTalkAdmin01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>INSERT INTO tblPerformanceResults (Test_ID, StartTime,LoadGenFile) VALUES ('{0}',GetDate(),'{1}' )</RawSQLQuery>
<SQLQueryParams>
<SQLQueryParam takeFromCtx="TestRunName"></SQLQueryParam>
<SQLQueryParam takeFromCtx="LoadGenFileContent"></SQLQueryParam>
</SQLQueryParams>
</SQLQuery>
</TestStep>
Il passaggio 8 è il punto in cui viene avviato il test effettivo delle prestazioni usando BizUnit.LoadGenExecuteStep. Questo passaggio specifica lo stesso file di configurazione LoadGen usato nel passaggio 5, ma è possibile specificare qualsiasi file di configurazione LoadGen valido qui. BizUnit.DelayStep viene usato nel passaggio 9 per imporre un ritardo di 5 secondi per consentire l'avvio del flusso dei messaggi attraverso il sistema. La lunghezza della coda host viene calcolata usando BizUnit.PerMonCounterMonitorStep. Quando questo parametro raggiunge un valore pari a 1 come specificato nel passaggio 10, il test viene concluso. Modificare i valori per i parametri InstanceName e Server in modo che corrispondano al nome dell'istanza host e del server da monitorare nell'ambiente.
<!-- Step 8: LoadGen: Load actual perf test -->
<TestStep assemblyPath="" typeName="BizUnit.LoadGenSteps.LoadGenExecuteStep, BizUnit.LoadGenSteps , Version=3.0.0.0, Culture=neutral, PublicKeyToken=7eb7d82981ae5162">
<LoadGenTestConfig>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</LoadGenTestConfig>
</TestStep>
<!-- Step 9: Delay for 5 secs to allow msgs to start flowing -->
<TestStep assemblyPath="" typeName="BizUnit.DelayStep">
<Delay>5000</Delay>
</TestStep>
<!-- Step 10: Wait for Orch Host Queue depth to reach one -->
<TestStep assemblyPath="" typeName="BizUnit.PerfMonCounterMonitorStep">
<CategoryName>BizTalk:Message Box:Host Counters</CategoryName>
<CounterName>Host Queue - Length</CounterName>
<InstanceName>BizTalkServerApplication:biztalkmsgboxdb:BizTalkAdmin01</InstanceName>
<Server>BizTalkAdmin01</Server>
<CounterTargetValue>1</CounterTargetValue>
</TestStep>
Al termine del test si usa BizUnit.DBExecuteNonQueryStep per aggiornare il database dei risultati del test. Il completamento di questo passaggio indica la fine della fase di esecuzione del test, come indicato dal tag /TestExecution> di chiusura<. Anche in questo caso, è necessario modificare i parametri ConnectionString e RawSQLQuery in modo che corrispondano all'ambiente in uso.
<!-- Step 11: Update test results DB with test stop time -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=TestResults;server=BIZTALKADMIN01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>UPDATE tblPerformanceResults SET EndTime = GetDate() WHERE Test_ID = '{0}'</RawSQLQuery>
<SQLQueryParams>
<SQLQueryParam takeFromCtx="TestRunName"></SQLQueryParam>
</SQLQueryParams>
</SQLQuery>
</TestStep>
</TestExecution>
Al termine della fase di esecuzione, si passa alla fase di conclusione e pulizia dei test. Questa fase usa BizUnit.PerfmonCountersStep per arrestare i contatori di Performance Monitor avviati in precedenza (nel passaggio 3).
<TestCleanup>
<!-- Return system to state prior to test -->
<!-- Stop perfmon counters -->
<TestStep assemblyPath="" typeName="BizUnit.PerfmonCountersStep" failOnError="false">
<PerfmonAction>Stop</PerfmonAction>
<CounterSetName>PerfGuidePerfmonCounters</CounterSetName>
</TestStep>
</TestCleanup>
</TestCase>
Questo esempio illustra come BizUnit può essere combinato con LoadGen per automatizzare i test delle prestazioni. Il test di carico descritto dal file di configurazione BizUnit può essere eseguito dagli strumenti di test di Visual Studio nello stesso modo dei test funzionali. L'adozione di questo approccio consente di gestire, amministrare e raccogliere in modo centralizzato i dati per i test delle prestazioni.
Usando BizUnit e LoadGen in un approccio automatizzato, è molto facile pianificare più esecuzioni di test durante gli orari di minore attività, che fornirà risultati di test ampi per l'analisi durante le normali ore lavorative. Quando si automatizzano i test delle prestazioni, è consigliabile usare script LoadGen che modellano carichi diversi nel sistema, ad esempio è possibile simulare diversi gradi (75%, 100% e 125%) del volume di messaggi di produzione previsto. Quando si eseguono test di carico, è particolarmente importante testare lo scenario di overload o "giorno non valido". Prima di inserire il sistema nell'ambiente di produzione, è necessario conoscere qual è la velocità effettiva massima sostenibile (MST) per ogni test case nell'ambiente BizTalk Server. Per altre informazioni sulle prestazioni massime sostenibili, vedere What Is Sustainable Performance? (https://go.microsoft.com/fwlink/?LinkID=132304) nella documentazione di BizTalk Server 2009.
File completo di configurazione di esempio BizUnit LoadGen
L'elenco seguente contiene l'intero contenuto del file di configurazione BizUnit a cui si fa riferimento in precedenza.
<TestCase testName="Performance-Guide-Sample-Loadgen-Test">
<TestSetup>
<!-- Context property: name of test run -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="TestRunName">
<ItemTest takeFromCtx="BizUnitTestCaseName"></ItemTest>
<ItemTest>_%DateTime%</ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: name of test directory to store results -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="TestCaseResultsDir">
<ItemTest>C:\Dev Work\Perf Guide Demos\PerfResults\</ItemTest>
<ItemTest takeFromCtx="TestRunName"></ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: perfmon log file -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="PerfMonFilePath">
<ItemTest takeFromCtx="TestCaseResultsDir"></ItemTest>
<ItemTest>\PerfCounters.blg</ItemTest>
</ContextItem>
</TestStep>
<!-- Context property: destintation for app event log on BTSSVR-001 -->
<TestStep assemblyPath="" typeName="BizUnit.ContextManipulatorStep">
<ContextItem contextKey="DestPath-BTSSVR-001-AppEventLog">
<ItemTest takeFromCtx="TestCaseResultsDir"></ItemTest>
<ItemTest>BTSSVR-001_ApplicationLog.evt</ItemTest>
</ContextItem>
</TestStep>
<!-- Clear the application event log on BTSSVR-001 -->
<TestStep assemblyPath="" typeName="BizUnit.EventLogClearStep">
<Machine>BIZTALKADMIN01</Machine>
<EventLog>Application</EventLog>
</TestStep>
<!-- Create the directory to save all the test results -->
<TestStep assemblyPath="" typeName="BizUnit.CreateDirectory">
<DirectoryName takeFromCtx="TestCaseResultsDir" ></DirectoryName>
</TestStep>
</TestSetup>
<TestExecution>
<!-- Step 1: Stop BizTalk Hosts -->
<TestStep assemblyPath="" typeName="BizUnit.HostConductorStep, BizUnit.BizTalkSteps">
<Action>stop</Action>
<HostInstanceName>BizTalkServerApplication</HostInstanceName>
<Server>BizTalkAdmin01</Server>
<Logon>ServerName\Administrator</Logon>
<PassWord>Pass@word1</PassWord>
<GrantLogOnAsService>true</GrantLogOnAsService>
</TestStep>
<!-- Step 2: Clean Up MessageBox -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=BizTalkMsgBoxDb;server=BIZTALKADMIN01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>[dbo].[bts_CleanupMsgbox]</RawSQLQuery>
</SQLQuery>
</TestStep>
<!-- Step 3: Start Perfmon counters -->
<TestStep assemblyPath="" typeName="BizUnit.PerfmonCountersStep">
<PerfmonAction>Start</PerfmonAction>
<CounterSetName>PerfGuidePerfmonCounters</CounterSetName>
<CountersListFilePath>C:\Dev Work\Perf Guide Demos\Test_06_PerfCounters.txt</CountersListFilePath>
<SampleInterval>5</SampleInterval>
<PerfmonLogFilePath takeFromCtx="PerfMonFilePath"></PerfmonLogFilePath>
</TestStep>
<!-- Step 4: Start BizTalk Hosts -->
<TestStep assemblyPath="" typeName="BizUnit.BizTalkSteps.HostConductorStep, BizUnit.BizTalkSteps, Version=3.0.0.0, Culture=neutral, PublicKeyToken=7eb7d82981ae5162">
<Action>start</Action>
<HostInstanceName>BizTalkServerApplication</HostInstanceName>
<Server>BizTalkAdmin01</Server>
<Logon>ServerName\Administrator</Logon>
<PassWord>Pass@word1</PassWord>
<GrantLogOnAsService>true</GrantLogOnAsService>
</TestStep>
<!-- Step 5: Send Priming messages -->
<TestStep assemblyPath="" typeName="BizUnit.LoadGenExecuteStep, BizUnit.LoadGenSteps">
<LoadGenTestConfig>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</LoadGenTestConfig>
</TestStep>
<!-- Step 6: Read loadgen file into context variable -->
<TestStep assemblyPath="" typeName="BizUnit.FileReadAndLoadToContext">
<FilePath>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</FilePath>
<ContextPropertyName>LoadGenFileContent</ContextPropertyName>
</TestStep>
<!-- Step 7: Update test results DB with test start time -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=TestResults;server=BizTalkAdmin01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>INSERT INTO tblPerformanceResults (Test_ID, StartTime,LoadGenFile) VALUES ('{0}',GetDate(),'{1}' )</RawSQLQuery>
<SQLQueryParams>
<SQLQueryParam takeFromCtx="TestRunName"></SQLQueryParam>
<SQLQueryParam takeFromCtx="LoadGenFileContent"></SQLQueryParam>
</SQLQueryParams>
</SQLQuery>
</TestStep>
<!-- Step 8: LoadGen: Load actual perf test -->
<TestStep assemblyPath="" typeName="BizUnit.LoadGenSteps.LoadGenExecuteStep, BizUnit.LoadGenSteps , Version=3.0.0.0, Culture=neutral, PublicKeyToken=7eb7d82981ae5162">
<LoadGenTestConfig>C:\Program Files\LoadGen\ConfigFiles\ConsoleConfigFiles\PerfGuideFiletoFile.xml</LoadGenTestConfig>
</TestStep>
<!-- Step 9: Delay for 5 secs to allow msgs to start flowing -->
<TestStep assemblyPath="" typeName="BizUnit.DelayStep">
<Delay>5000</Delay>
</TestStep>
<!-- Step 10: Wait for Orch Host Queue depth to reach one -->
<TestStep assemblyPath="" typeName="BizUnit.PerfMonCounterMonitorStep">
<CategoryName>BizTalk:Message Box:Host Counters</CategoryName>
<CounterName>Host Queue - Length</CounterName>
<InstanceName>BizTalkServerApplication:biztalkmsgboxdb:BizTalkAdmin01</InstanceName>
<Server>BizTalkAdmin01</Server>
<CounterTargetValue>1</CounterTargetValue>
</TestStep>
<!-- Step 11: Update test results DB with test stop time -->
<TestStep assemblyPath="" typeName="BizUnit.DBExecuteNonQueryStep">
<DelayBeforeExecution>1</DelayBeforeExecution>
<ConnectionString>Persist Security Info=False;Integrated Security=SSPI;database=TestResults;server=BIZTALKADMIN01;Connect Timeout=30</ConnectionString>
<SQLQuery>
<RawSQLQuery>UPDATE tblPerformanceResults SET EndTime = GetDate() WHERE Test_ID = '{0}'</RawSQLQuery>
<SQLQueryParams>
<SQLQueryParam takeFromCtx="TestRunName"></SQLQueryParam>
</SQLQueryParams>
</SQLQuery>
</TestStep>
</TestExecution>
<TestCleanup>
<!-- Return system to state prior to test -->
<!-- Stop perfmon counters -->
<TestStep assemblyPath="" typeName="BizUnit.PerfmonCountersStep" failOnError="false">
<PerfmonAction>Stop</PerfmonAction>
<CounterSetName>PerfGuidePerfmonCounters</CounterSetName>
</TestStep>
</TestCleanup>
</TestCase>