Condividi tramite


Come risolvere una perdita di memoria o un'eccezione di memoria insufficiente nel processo di BizTalk Server

Questo articolo descrive come risolvere una perdita di memoria o un'eccezione di memoria insufficiente nel processo BizTalk Server di Microsoft BizTalk Server.

Versione originale del prodotto: BizTalk Server 2010, 2009
Numero KB originale: 918643

Riepilogo

Le perdite di memoria sono un problema comune. Potrebbe essere necessario provare diversi passaggi per individuare la causa specifica di una perdita di memoria o un'eccezione di memoria insufficiente in Microsoft BizTalk Server. Questo articolo illustra gli aspetti importanti da considerare quando si valuta l'utilizzo della memoria e i possibili problemi relativi alla memoria. Queste considerazioni includono quanto segue:

  • RAM fisica
  • Elaborazione di messaggi di grandi dimensioni
  • Uso dell'opzione /3GB
  • Uso di componenti personalizzati
  • Quale versione di Microsoft .NET Framework è in esecuzione nel sistema
  • Numero di processori

Il processo di BizTalk Server potrebbe riscontrare una perdita di memoria quando l'utilizzo della memoria in Microsoft Windows Task Manager utilizza più del 50% della RAM fisica. Una perdita di memoria può causare un'eccezione di memoria insufficiente quando l'utilizzo della memoria aumenta fino a quando il processo non esaurisce la memoria di sistema o fino a quando il processo non smette di funzionare. Per questo problema, considerare quanto segue:

Utilizzo fisico della RAM e della memoria

Poiché potrebbe essere previsto un comportamento per un processo per usare circa la metà della RAM fisica, usare l'utilizzo della memoria come linea guida. Ad esempio, se BizTalk Server ha 4 gigabyte (GB) di RAM e il processo di BizTalk Server usa circa 500 megabyte (MB) di RAM, potrebbe non esserci perdita. Se il processo di BizTalk Server usa circa 1 GB di RAM, potrebbe verificarsi una perdita di memoria o una situazione di memoria elevata. L'utilizzo della memoria può essere causato da una stored procedure o un'orchestrazione a esecuzione prolungata. Assicurarsi di conoscere la quantità di memoria usata in genere dall'host BizTalk per determinare se si verifica una perdita di memoria o una condizione di memoria elevata.

Messaggi di grandi dimensioni

Quando BizTalk Server elabora messaggi di grandi dimensioni, il sistema sembra avere una perdita di memoria. Tuttavia, i messaggi potrebbero usare una grande quantità di memoria.

Si consideri anche che potrebbe essere previsto un utilizzo elevato della memoria se BizTalk Server sta elaborando messaggi di grandi dimensioni. È possibile aggiornare l'hardware per soddisfare i requisiti di prestazioni di BizTalk Server nell'ambiente in uso.

Tempo necessario per riprodurre la perdita di memoria

Le perdite di memoria possono verificarsi immediatamente o possono accumularsi nel tempo. Entrambi gli scenari sono comuni.

Uso dell'opzione /3GB nei computer a 32 bit

In genere, un processo può accedere a 2 GB di spazio indirizzi virtuale. L'opzione /3GB è un'opzione per i sistemi che richiedono più memoria indirizzabile. Questa opzione può migliorare l'utilizzo della memoria per l'elaborazione dei messaggi. Tuttavia, l'opzione /3GB consente solo 1 GB di memoria indirizzabile per le operazioni in modalità kernel. Inoltre, questa opzione può aumentare il rischio di esaurimento della memoria del pool.

Quando l'opzione /3GB è abilitata in una versione a 32 bit di Windows, il processo può accedere a 3 GB di spazio indirizzi virtuale se il processo è compatibile con indirizzi di grandi dimensioni. Un processo è compatibile con indirizzi di grandi dimensioni quando l'eseguibile ha il flag IMAGE_FILE_LARGE_ADDRESS_AWARE impostato nell'intestazione dell'immagine. Poiché il processo BizTalk è compatibile con indirizzi di grandi dimensioni, BizTalk trarrà vantaggio dall'opzione /3GB.

Se un'istanza host BizTalk a 32 bit è in esecuzione in una versione a 64 bit di Windows (AMD64), il processo BizTalk trae vantaggio dallo spazio indirizzi di memoria a 4 GB perché BizTalk è compatibile con indirizzi di grandi dimensioni. Pertanto, lo spostamento delle applicazioni con memoria elevata in un server a 64 bit può essere la soluzione migliore.

Un processo BizTalk a 64 bit in una versione a 64 bit di Windows (AMD64) ha 8 TB di memoria indirizzabile.

È anche consigliabile prendere in considerazione i byte virtuali e i byte privati usati dal processo. Un'istanza host BizTalk (che è un'applicazione .NET Framework) potrebbe ricevere un errore di memoria insufficiente prima che il valore byte virtuali raggiunga 2 GB. Questa situazione può verificarsi anche se la memoria massima indirizzabile da un processo in una versione a 32 bit di Windows (senza l'opzione /3GB) è di 2 GB. Per una spiegazione del motivo per cui può verificarsi questa situazione, visitare il seguente sito Web Msdn (Microsoft Developer Network):
ASP.NET Monitor prestazioni e quando avvisare gli amministratori

L'opzione /3GB aumenta anche i byte privati massimi del processo BizTalk da 800 MB a 1800 MB. Per altre informazioni sulle prestazioni delle applicazioni .NET Framework con l'opzione /3GB abilitata, vedere Capitolo 17: Ottimizzazione delle prestazioni delle applicazioni .NET.

La tabella seguente riepiloga queste informazioni e include i limiti pratici per i byte virtuali e i byte privati.

Processo Finestre Memoria indirizzabile (con un processo compatibile con indirizzi di grandi dimensioni) Limite pratico per i byte virtuali Limite pratico per byte privati
32 bit 32 bit 2 GB 1400 MB 800 MB
32 bit 32 bit con /3 GB 3 GB 2400 MB 1800 MB
32 bit 64 bit 4 GB 3400 MB 2800 MB
64 bit 64 bit 8 TB Non applicabile Non applicabile

Per altre informazioni sulla memoria indirizzabile per Windows a 32 bit e windows a 64 bit, vedere Limiti di memoria per le versioni di Windows e Windows Server.

Nella tabella seguente sono elencati PAE e 3 GB di supporto per versioni diverse di BizTalk Server.

Prodotto PAE 3 GB
BizTalk Server 2004 No
BizTalk Server 2006
BizTalk Server 2006 R2
BizTalk Server 2009

Se è necessario abilitare l'opzione /3GB per soddisfare i requisiti di prestazioni di un computer che esegue BizTalk Server, è consigliabile aggiungere server al gruppo BizTalk. In questo modo è possibile aumentare le istanze host a elevato utilizzo di memoria.

I componenti BizTalk eseguiti all'interno di un processo IIS (Internet Information Services) possono trarre vantaggio anche quando l'opzione /3GB è abilitata.

L'opzione /3GB non è supportata nei computer che eseguono Windows SharePoint Services 2.0 o versioni successive o SharePoint Portal Server 2003 SP2 o versioni successive. L'opzione Windows Server 2003 /3GB non è supportata in Windows SharePoint Services 2.0 o versioni successive o in SharePoint Portal Server 2003 Service Pack 2 o versioni successive.

Uso di componenti personalizzati

Se si usano componenti personalizzati, ad esempio pipeline o componenti del servizio, è necessario conoscere le operazioni eseguite da questi componenti. È anche necessario conoscere il potenziale effetto di questi componenti sull'utilizzo della memoria. Un problema di memoria comune si verifica quando un componente trasforma un documento. L'operazione di trasformazione è un'operazione a elevato utilizzo di memoria. Quando un documento viene trasformato, BizTalk Server passa il flusso di messaggi alla classe Microsoft .NET Framework XslTransform all'interno del processo BizTalk.

Un altro problema comune si verifica quando si verifica una manipolazione intensiva delle stringhe. La manipolazione intensiva delle stringhe può consumare un sacco di ricordi. Per altre informazioni sui modi per migliorare le prestazioni, vedere Miglioramento delle prestazioni del codice gestito.

Versione di .NET Framework

Microsoft .NET Framework 2.0 e .NET Framework 1.1 hanno un comportamento di memoria diverso. Quindi potresti vedere risultati variabili tra di loro. Se si usa .NET Framework, verificare che sia installata la versione più recente di .NET Framework Service Pack 1. Questo Service Pack risolve diversi problemi di memoria noti.

Numero di processori

Common Language Runtime (CLR) include i garbage collector seguenti:

  • Workstation (Mscorwks.dll)
  • Server (Mscorsvr.dll)

Se il computer che esegue BizTalk Server è un sistema multiprocessore, .NET Framework usa la versione server del motore di esecuzione. Questo è il comportamento predefinito. Il Garbage Collector server è progettato per la velocità effettiva massima. Inoltre, il Garbage Collector server viene ridimensionato per offrire prestazioni elevate. Questo Garbage Collector alloca la memoria e quindi libera la memoria per offrire prestazioni elevate nel sistema. Pertanto, un computer che esegue BizTalk Server insieme ad alcuni componenti di .NET Framework sembra avere una perdita di memoria. In questo scenario, tuttavia, l'utilizzo elevato della memoria è il comportamento previsto. Se il computer esaurisce la memoria di sistema o se il processo smette di funzionare a causa di memoria indirizzabile insufficiente, potrebbe esistere una condizione di perdita di memoria.

Se il computer che esegue BizTalk Server è un singolo sistema di processore, .NET Framework usa la versione workstation del motore di esecuzione. Si tratta del comportamento predefinito. L'algoritmo di allocazione di Garbage Collector workstation non è progettato per il ridimensionamento o per la velocità effettiva massima. Questo Garbage Collector usa metodi simultanei di Garbage Collector. Questi metodi sono progettati per applicazioni con interfacce utente complesse. Tali applicazioni possono richiedere un'operazione di Garbage Collection più aggressiva.

Importante

In questa sezione, metodo o attività viene illustrata la procedura per modificare il Registro di sistema. Tuttavia, potrebbero verificarsi gravi problemi se si modifica il Registro di sistema in modo non corretto. Assicurarsi quindi di seguire attentamente questi passaggi. Per una maggiore protezione, eseguire il backup del Registro di sistema prima di modificarlo. Successivamente, è possibile ripristinare il Registro di sistema se si verifica un problema. Per ulteriori informazioni su come eseguire il backup e il ripristino del Registro di sistema, vedi Come eseguire il backup e il ripristino del Registro di sistema in Windows.

In alcuni casi, può essere opportuno eseguire la versione workstation del motore di esecuzione in un sistema multiprocessore. È possibile usare la chiave del Registro di sistema seguente per passare alla versione workstation del motore di esecuzione.

BizTalk 2006 e versioni successive

Creare la chiave del Registro di sistema String seguente CRL Hosting con i valori corrispondenti:

  • Chiave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR Hosting
  • Nome valore: Flavor
  • Dati valore: wks

BizTalk 2004

Creare la chiave del Registro di sistema String seguente CRL Host con i valori corrispondenti:

  • Chiave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc{GUID }\CLR Hosting
  • Nome valore: Flavor
  • Dati valore: wks

Per altre informazioni, vedere Considerazioni sulle prestazioni per le tecnologie di runtime in .NET Framework.

Di seguito sono riportate le cause e le risoluzioni comuni:

Soglie di limitazione dell'utilizzo della memoria fisica e del processo

Le soglie di limitazione dell'utilizzo della memoria fisica e utilizzo memoria fisica possono essere modificate in BizTalk Server 2006 e nelle versioni successive.

  • Per impostazione predefinita, la soglia di limitazione dell'utilizzo della memoria del processo è impostata su 25. Se questo valore viene superato e l'utilizzo della memoria del processo BizTalk è superiore a 300 MB, può verificarsi una condizione di limitazione. In un server a 32 bit è possibile aumentare il valore di utilizzo della memoria del processo a 50. In un server a 64 bit è possibile aumentare questo valore a 100. Ciò consente un maggiore consumo di memoria da parte del processo BizTalk prima che si verifichi la limitazione.

  • La soglia di limitazione dell'utilizzo della memoria fisica ha un valore predefinito pari a 0. Questa soglia misura la memoria totale del sistema. Pertanto, se è configurato un valore diverso da 0, una condizione di limitazione può verificarsi se un processo non BizTalk usa memoria elevata.

Soglie di limitazione della disidratazione

Le soglie di disidratazione della memoria predefinite possono causare troppa disidratazione quando le orchestrazioni vengono eseguite su un host a 64 bit. Per altre informazioni su questo problema, vedere Proprietà predefinite di disidratazione.

Note

Gli host a 64 bit sono supportati in BizTalk Server 2006 e versioni successive.

Nell'hardware equivalente in un'istanza host a 32 bit, la disidratazione osservata è nominale quando le stesse orchestrazioni vengono eseguite usando le soglie predefinite di limitazione della disidratazione della memoria.

Poiché l'architettura a 64 bit offre spazio di indirizzi di memoria espanso (16 TB anziché 4 GB), le istanze host a 64 bit vengono allocate più memoria rispetto alle istanze host a 32 bit. Ciò può causare il superamento delle soglie di limitazione della memoria predefinite.

Per aggirare questo comportamento, modificare i valori VirtualMemoryThrottlingCriteria e PrivateMemoryThrottlingCriteria nel file BTSNTSvc64.exe.config. Usare i contatori \Process\Virtual Bytes e \Process\Private Bytes Monitor prestazioni per determinare la quantità massima di memoria allocata da un'istanza di orchestrazione.

  • Impostare il valore OptimalUsage per entrambe le proprietà in base alle condizioni seguenti:

    • VirtualMemoryThrottlingCriteria: \Process\Virtual Bytes value + 10%
    • PrivateMemoryThrottlingCriteria: \Process\Private Bytes value + 10%
  • Impostare MaximalUsage per entrambe le proprietà sul valore OptimalUsage + 30%

Ad esempio, se il valore del contatore \Process\Virtual Byte Monitor prestazioni per un'istanza di orchestrazione è 5.784.787.695 byte (5.517 MB), impostare il valore OptimalUsage per VirtualMemoryThrottlingCriteria a 6.069 MB (5.784.787.695 * 1,10 = 6.363.266.464.5 byte).

Impostare il valore MaximalUsage per VirtualMemoryThrottlingCriteria su 7.889 MB (6.363.266.464.5 * 1,30 = 8.272.246.403.85 byte).

Se il valore del contatore \Process\Private Bytes Monitor prestazioni è 435689400 byte (415 MB), impostare il valore OptimalUsage per PrivateMemoryThrottlingCriteria su 457 MB (435689400 * 1,10 = 479258340 byte).

Impostare il valore MaximalUsage per PrivateMemoryThrottlingCriteria su 594 MB (479258340 * 1,30 = 623035842).

Per questo esempio, i valori seguenti vengono specificati nel file BTSNTSvc64.exe.config per ridurre la limitazione.

contatore Monitor prestazioni Memoria allocata OptimalUsage MaximalUsage
\Process\Virtual Bytes 5.784.787.695 byte (5517 MB) 6069 7889
\Process\Private Bytes 435.689.400 byte (415 MB) 457 594

Questi valori verranno quindi rappresentati nel file BTSNTSvc64.exe.config come indicato di seguito:

<xlangs>
    <Configuration>
       <Dehydration>
         <VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
         <PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
       </Dehydration>
    </Configuration>
</xlangs>

Per determinare quale istanza host esegue l'orchestrazione, è possibile trovare la corrispondenza con il processo ID dei contatori \BizTalk: Messaging\ID Process e \Process\ID Process Monitor prestazioni. Controllare quindi il valore Average visualizzato per i contatori \Process\Virtual Bytes e \Process\Private Bytes Monitor prestazioni.

Note

Informazioni che l'utente deve notare anche se skimmingLa disidratazione elevata può causare una riduzione significativa delle prestazioni quando il BizTalkMsgBoxDb database è in esecuzione in SQL Server 2008.

Service Pack di BizTalk Server e aggiornamenti cumulativi

I Service Pack di BizTalk Server e gli aggiornamenti cumulativi includono le correzioni più recenti. Questi includono quelli che influiscono sui problemi noti System.OutOfMemoryException .

HeapDeCommitFreeBlockThreshold

Per impostazione predefinita, il valore della HeapDeCommitFreeBlockThreshold chiave del Registro di sistema è 0. Il valore 0 indica che il gestore dell'heap esegue il decomposizione di ogni pagina di 4 kilobyte (KB) che diventa disponibile. Le operazioni di decomposizione possono causare frammentazione della memoria virtuale. Le dimensioni dell'impostazione nel gestore dell'heap HeapDeCommitFreeBlockThreshold dipendono dal tipo di lavoro che il sistema sta eseguendo. Una dimensione di 0x00040000 è un valore iniziale consigliato.

Prima di modificare il valore della chiave del HeapDeCommitFreeBlockThreshold Registro di sistema, prendere in considerazione le informazioni seguenti:

  • Questa modifica si applica solo ai problemi di frammentazione della memoria.
  • Questa modifica è a livello di sistema. Pertanto, la maggior parte dei processi userà più memoria all'avvio.
  • Considerare questa modifica solo per i sistemi che hanno BizTalk Server come missione principale.

Per ridurre la frammentazione della memoria virtuale, è possibile aumentare le dimensioni dell'impostazione HeapDeCommitFreeBlockThreshold nel gestore heap modificando il valore della chiave del Registro di sistema seguente in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager:

  • Nome valore: HeapDeCommitFreeBlockThreshold
  • Tipo di valore: REG_DWORD
  • Dati valore: 0x00040000 (è il valore iniziale consigliato).
  • Valore predefinito: non presente

Operazioni di trasformazione

Quando BizTalk Server esegue operazioni di trasformazione XML su messaggi abbastanza grandi in una porta di ricezione, in una porta di trasmissione o in XLANG, le trasformazioni XSL caricano l'intero messaggio in memoria.

Per risolvere questo problema, scegliere una delle alternative seguenti:

  • Ridurre il numero di messaggi elaborati contemporaneamente da BizTalk Server.
  • Ridurre le dimensioni del messaggio XML da trasformare.

L'oggetto System.Policy.Security.Evidence viene spesso usato nelle trasformazioni e può utilizzare molta memoria. Quando una mappa contiene uno script functoid che usa C# inline (o qualsiasi altro linguaggio inline), l'assembly viene creato in memoria. L'oggetto System.Policy.Security.Evidence utilizza l'oggetto dell'assembly chiamante effettivo. Questa situazione crea un oggetto rooted che non viene eliminato fino al riavvio del servizio BizTalk.

La maggior parte delle impostazioni predefinite di BizTalk functoids viene implementata come script inline. Questi elementi possono causare System.Byte[] la raccolta di oggetti in memoria. Per ridurre al minimo il consumo di memoria, è consigliabile inserire qualsiasi mappa che usa tali functoids elementi in un piccolo assembly. Quindi, fare riferimento all'assembly. Usare il grafico seguente per determinare quale functoids utilizzo di script inline e quali functoids non usare script inline.

Nella seconda colonna Sì indica che viene functoid implementato come script inline e che gli System.Byte[] oggetti verranno raccolti in memoria. Non significa che questo functoid non viene implementato come script inline e che non causerà System.Byte[] la raccolta di oggetti in memoria.

Functoid Script inline?
Tutti i functoid stringa
Tutti i functoid matematici
Tutti i functoid logici tranne IsNil
Functoid IsNil logico No
Tutti i functoid data/ora
Tutti i functoid di conversione
Tutti i functoid scientifici
Tutti i functoid cumulativi
Tutti i functoid del database No
Functoid avanzati Script inline?
Functoid Ciclo No
Functoid Appiattimento mapping valore No
Functoid Asserzione No
Functoid Estrazione da tabella No
Functoid Ciclo tabelle No
Functoid scripting con Inline C#
Scripting Functoid with Inline JScript.NET
Functoid Scripting with Inline Visual Basic .NET (Scripting Functoid with Inline Visual Basic .NET)
Scripting Functoid with Inline XSLT No
Scripting Functoid with Inline XSLT Call Template No
Scripting Functoid calling External Assembly No
Functoid Valore Nil No
Functoid Mapping di valori No
Functoid Copia di massa No
Functoid Iterazione No
Functoid Indice No
Functoid Conteggio record No

BizTalk Server 2006 e versioni successive migliorano significativamente la gestione della memoria per documenti di grandi dimensioni. A tale scopo, BizTalk Server implementa una soglia di dimensioni dei messaggi configurabili per il caricamento di documenti in memoria durante le operazioni di trasformazione. La soglia predefinita per le dimensioni del messaggio è 1 MB. Per altre informazioni sull'impostazione TransformThreshold, vedere Come BizTalk Server elabora messaggi di grandi dimensioni.

Valori di attributo di grandi dimensioni e valori di elementi di grandi dimensioni

Quando BizTalk Server esegue una pipeline di ricezione o una pipeline di trasmissione in un documento XML, il payload viene elaborato in memoria se il documento contiene una o più delle entità seguenti:

  • Valori di attributo di grandi dimensioni
  • Valori di elementi di grandi dimensioni
  • Tag di attributi o elementi di grandi dimensioni

Per risolvere questo problema, limitare le dimensioni di queste entità. Se questo metodo non è possibile, assicurarsi che l'istanza host BizTalk non elabori più documenti, ad esempio questi contemporaneamente.

Componenti della pipeline personalizzati

Si usa un componente della pipeline personalizzato che carica l'intero flusso in memoria. Tutti i componenti inclusi in BizTalk Server, ad eccezione delle trasformazioni, supportano lo streaming. Questi componenti non usano la quantità di memoria durante lo streaming. Tuttavia, i componenti della pipeline personalizzati potrebbero non supportare lo streaming.

Streaming sotto stress elevato

Gli host di invio esauriscono la memoria quando operano sotto stress elevato. BizTalk Server invia pipeline e invia gli adattatori supportano il flusso. In streaming, ogni componente carica un piccolo frammento del flusso in memoria. Poiché ogni messaggio include altre strutture di dati, insieme a un contesto di messaggio che può essere significativo o piccolo, questo comportamento influisce sul comportamento di BizTalk Server sotto stress elevato.

Il comportamento di BizTalk Server è interessato perché il motore carica un numero preconfigurato di messaggi. Il numero di messaggi caricati dal motore si basa sui valori visualizzati nel campo LowWaterMark e nel campo HighWaterMark della Adm_serviceClass tabella. La Adm_serviceClass tabella si trova nel database di gestione BizTalk. Questi valori controllano il numero di messaggi elaborati o inviati contemporaneamente da BizTalk Server.

Il valore HighWaterMark è il numero totale di messaggi elaborati contemporaneamente dal motore. Il valore predefinito è 200 messaggi per CPU. Pertanto, in un server a 8 processori, l'host di invio tenterà di elaborare contemporaneamente 1.600 messaggi (200 * 8).

Se si presuppone che ogni messaggio sia 50 KB, i messaggi sono uguali a 80 MB (1.600 * 50=80.000 KB).

Per risolvere questo problema, è possibile modificare il valore HighWaterMark e il valore LowWaterMark nel database. I valori usati dipendono dalle dimensioni dei messaggi. Per BizTalk Server 2006 e versioni successive, è possibile modificare le impostazioni di limitazione predefinite dell'host.

Provare a semplificare il problema

Se è stata identificata una perdita di memoria, provare a determinare la causa rimuovendo componenti personalizzati o semplificando una mappa. Provare anche a riprodurre il problema usando una semplice orchestrazione o una soluzione semplice. In genere, è necessario creare host di ricezione separati per gli adattatori di ricezione. È anche consigliabile creare host di invio separati per gli adapter di trasmissione. Quando si usa questo metodo, ogni adattatore può essere eseguito in un processo separato. Pertanto, se il processo di BizTalk Server presenta una condizione di memoria insufficiente, si saprà quali componenti sono coinvolti.

Passaggi per la risoluzione dei problemi

Per risolvere i problemi relativi a una condizione di memoria insufficiente, usare lo strumento Diagnostica di debug per monitorare le allocazioni di memoria nel tempo. Lo strumento Diagnostica di debug può creare e analizzare un file di dump della perdita di memoria (.dmp). Quando si risolvono le perdite di memoria, l'obiettivo è collegare Leaktrack.dll prima che la condizione di memoria elevata venga riprodotta per acquisire la crescita della memoria nel tempo. Leaktrack.dll è incluso nello strumento Di diagnostica di debug.

  1. Installare lo strumento di diagnostica di debug.

    Il file seguente è disponibile per il download dall'Area download Microsoft:
    Scaricare il pacchetto dello strumento di diagnostica di debug ora

    Per altre informazioni su come scaricare i file di supporto Microsoft, vedere Come ottenere i file di supporto Microsoft da Servizi online.

    Microsoft ha analizzato questo file per individuare i virus. Microsoft ha usato il software di rilevamento di virus più recente disponibile alla data in cui è stato pubblicato il file. Il file viene archiviato nei server con sicurezza avanzata che consentono di impedire modifiche non autorizzate al file.

  2. Usare Monitor prestazioni per raccogliere dati sulle prestazioni del sistema. Questi dati possono fornire indicatori importanti sull'efficienza dell'ambiente BizTalk Server. L'obiettivo è acquisire le prestazioni del processo nel tempo. Abilitare pertanto Monitor prestazioni registrazione prima che si verifichi la perdita di memoria.

Come usare la registrazione Monitor prestazioni

Le sezioni seguenti descrivono come usare la registrazione di Performance Monitor.

Selezionare i dati da registrare

Per selezionare i dati da registrare, usare il metodo appropriato per il sistema operativo:

  • Per Windows Server 2008 e Windows Server 2008 R2
    1. In Strumenti di amministrazione aprire Affidabilità e Monitor prestazioni.

    2. Fare clic con il pulsante destro del mouse su Monitor prestazioni, scegliere Nuovo e quindi set di raccolta dati.

    3. Nella casella Nome digitare un nome descrittivo e quindi fare clic su Avanti.

    4. Prendere nota della directory radice e quindi fare clic su Avanti.

    5. Fare clic su Start this data collector set now (Avvia questo insieme di agenti di raccolta dati) e quindi su Finish ( Fine).

    6. Espandere Set di agenti di raccolta dati, espandere Definito dall'utente e quindi selezionare il file.

    7. Fare clic con il pulsante destro del mouse su Log di Monitoraggio di sistema, quindi scegliere Proprietà.

    8. Fare clic su Aggiungi nella scheda Contatori delle prestazioni . Selezionare gli oggetti seguenti e quindi fare clic su Aggiungi dopo aver selezionato ogni oggetto:

      • Eccezioni CLR .NET
      • Memoria CLR .Net
      • BizTalk: Messaggistica
      • BizTalk: TDDS
      • Memory
      • Processo
      • Processore
      • Orchestrazioni XLANG/s

      Se SQL Server è locale, aggiungere anche gli oggetti seguenti:

      • SQLServer: database
      • SQLServer: Statistiche generali
      • SQLServer: Gestione memoria
    9. Scegliere OK.

    10. Impostare la casella Valore intervallo campione su 5 secondi.

      Note

      Il valore Sample Interval e il tempo di inizio del monitoraggio sono soggettivi. Questi valori dipendono dal momento in cui viene riprodotta la perdita di memoria. Poiché il file di log può essere di grandi dimensioni, specificare un intervallo in cui è possibile ottenere le informazioni necessarie senza sovraccaricare il server.

    11. Scegliere OK.

Per interrompere la raccolta dei dati, fare clic su Arresta dal menu Azione .

  • Per Windows Server 2003 o per Windows XP

    1. Espandere Log prestazioni e avvisi.

    2. Fare clic con il pulsante destro del mouse su Log contatori, quindi scegliere Nuove impostazioni log. Verrà visualizzata la finestra di dialogo Nuove impostazioni log.

    3. Nella casella Nome digitare un nome descrittivo e quindi fare clic su OK.

    4. Prendere nota del percorso del file di log. (È anche possibile fare clic sul Scheda File di log, quindi fare clic su Configura per modificare il percorso del file di log.

    5. Fare clic su Aggiungi contatori.

    6. Selezionare Tutti i contatori e Tutte le istanze.

    7. Nell'elenco Oggetto prestazioni selezionare gli oggetti seguenti. Fare clic su Aggiungi dopo aver selezionato ogni oggetto.

      • Eccezioni CLR .NET
      • Memoria CLR .Net
      • BizTalk: Messaggistica
      • BizTalk: TDDS
      • Memory
      • Processo
      • Processore
      • Orchestrazioni XLANG/s

      Se SQL Server è locale, aggiungere anche gli oggetti seguenti:

      • SQLServer: database
      • SQLServer: Statistiche generali
      • SQLServer: Gestione memoria
    8. Fare clic su Close.

    9. Modificare il valore in Intervallo di campionamento dati impostando su 5 secondi.

      Note

      Il valore Intervallo campionamento dati e il tempo di inizio del monitoraggio sono soggettivi. Questi valori dipendono dal momento in cui viene riprodotta la perdita di memoria. Poiché il file di log può essere di grandi dimensioni, specificare un intervallo in cui è possibile ottenere le informazioni necessarie senza sovraccaricare il server.

    10. Scegliere OK. Per interrompere la raccolta dei dati, fare clic con il pulsante destro del mouse sul nome del log dei contatori e quindi scegliere Arresta.

Ottenere il file di dump

Per ottenere il file di dump, utilizzare uno dei metodi seguenti:

Metodo 1: Automatico

La creazione di una regola di perdita di memoria e handle con DebugDiag è l'approccio consigliato per acquisire un dump della memoria. La regola Perdita di memoria e handle allega automaticamente Leaktrack.dll. Viene usato per tenere traccia delle allocazioni di memoria. Per creare la regola Memoria e Gestione perdita, seguire questa procedura:

  1. Avviare lo strumento di diagnostica di debug 1.1.

  2. Selezionare Memoria e Handle Leak (Perdita di memoria e handle) e quindi fare clic su Avanti.

  3. Selezionare il processo di Btsntsvc.exe e quindi fare clic su Avanti.

  4. Nella pagina Configura regola perdita seguire questa procedura:

    1. Fare clic per selezionare la casella di controllo Avvia rilevamento memoria immediatamente quando viene attivata la regola. In caso contrario, è possibile specificare un tempo di riscaldamento prima che LeakTrack.dll venga inserito nel processo di BTSNTSvc.exe.

    2. Fare clic su Configura e quindi eseguire le operazioni seguenti:

      • Verificare che l'opzione Crea automaticamente una regola di arresto anomalo sia selezionata. Selezionando questa opzione, verrà creato automaticamente un dump della memoria se il processo BTSNTSvc.exe si arresta.

      • Fare clic per selezionare la casella di controllo Genera un userdump quando i byte virtuali raggiungono e mantenere il valore predefinito 1024.

      • Fare clic per selezionare e ogni casella di controllo aggiuntiva e mantenere il valore predefinito 200. Selezionando l'opzione di copertura dei byte virtuali, un dump della memoria verrà creato automaticamente quando i byte virtuali usano 1024 MB. Se i byte virtuali aumentano di 200 MB, verrà creato automaticamente un altro dump della memoria.

    3. Fare clic su Salva e chiudi.

    4. Fare clic su Avanti.

    5. Nella pagina Selezione percorso dump e nome regola fare clic su Avanti.

      Note

      È anche possibile modificare il percorso del file di dump nella casella Percorso utente in questa pagina.

    6. Fare clic su Fine per attivare la regola.

      Note

      Lo stato della regola è ora Rilevamento. Ogni volta che viene creato un dump della memoria, il valore aumenterà nella colonna Userdump Count nella scheda Regole . Il percorso di dump della memoria predefinito è C:\Program Files\DebugDiag\Logs.

Metodo 2: Manuale

È anche possibile allegare manualmente Leaktrack.dll e ottenere manualmente il file di dump della memoria. In questo modo è possibile controllare quando viene creato il dump della memoria. A tale scopo, effettuare i passaggi seguenti:

  1. Avviare lo strumento di diagnostica di debug 1.1.
  2. Fare clic sulla scheda Processi .
  3. Fare clic con il pulsante destro del mouse sul processo di Btsntsvc.exe, quindi scegliere Monitor For Leaks (Monitor For Leaks).
  4. Nella finestra di dialogo Strumento di diagnostica di debug fare clic su e quindi su OK.

Creare una regola di arresto anomalo per monitorare lo stesso processo Btsntsvc.exe nel caso in cui il processo si arresti prima di poter creare il dump della memoria:

  1. Avviare lo strumento di diagnostica di debug 1.1.
  2. Selezionare Arresto anomalo e quindi fare clic su Avanti.
  3. Selezionare un processo specifico e quindi fare clic su Avanti.
  4. Selezionare lo stesso processo di Btsntsvc.exe e quindi fare clic su Avanti.
  5. Nella pagina Configurazione avanzata (facoltativo) fare clic su Avanti.
  6. Nella finestra di dialogo Seleziona percorso dump e nome regola (facoltativo) fare clic su Avanti.
  7. Selezionare Attiva la regola ora e quindi fare clic su Fine.

Quando il processo raggiunge il 60% fino all'80% della RAM, fare clic con il pulsante destro del mouse sul processo di Btsntsvc.exe e quindi scegliere Crea utente completodump. Se il processo BizTalk si arresta prima di poter creare il dump dell'utente, la regola Arresto anomalo dovrebbe avere effetto e creare il dump della memoria.

Arrestare Monitor prestazioni registrazione

Se si acquisisce un dump della memoria e si Monitor prestazioni dati, arrestare Monitor prestazioni registrazione circa due minuti dopo la creazione del dump della memoria.

Analizzare il file di dump

Per determinare la causa di una perdita di memoria, è possibile usare lo strumento Diagnostica di debug per analizzare il file di dump. A tale scopo, effettuare i passaggi seguenti:

  1. Fare clic sulla scheda Analisi avanzata.
  2. Fare clic su Aggiungi file di dati e quindi individuare il file .dmp.
  3. Selezionare lo script Analisi utilizzo memoria e quindi fare clic su Avvia analisi.

Per impostazione predefinita, nella cartella verrà creato C:\Program Files\DebugDiag\Reports un file di report di analisi (file con estensione mht). Il file di report verrà visualizzato anche nel browser. Il file di report contiene i risultati dell'analisi. Inoltre, il file di report può contenere raccomandazioni su come risolvere la perdita di memoria.

Se si usano DLL personalizzate, è possibile aggiungere il percorso dei simboli dei file con estensione pdb personalizzati per l'analisi. A tale scopo, effettuare i passaggi seguenti:

  1. Aprire lo strumento Debug diagnostics.
  2. Scegliere Opzioni e impostazioni dal menu Strumenti.
  3. Nella casella Percorso di ricerca simboli per il debug digitare il percorso del simbolo.

Se si vuole assistenza per l'analisi del file di dump, contattare il Servizio Supporto Tecnico Clienti Microsoft. Per un elenco completo dei numeri di telefono dei servizi di supporto tecnico e per informazioni sui costi di supporto, visitare il supporto tecnico.

Prima di contattare il Servizio supporto tecnico clienti, comprimere il file di dump, il log Monitor prestazioni, il file del report di analisi e i registri eventi aggiornati (file con estensione evt). Potrebbe essere necessario inviare questi file a un tecnico del supporto di BizTalk Server.