Comment faire pour dépanner une fuite de mémoire ou une exception de mémoire insuffisante dans le processus BizTalk Server

Traductions disponibles Traductions disponibles
Numéro d'article: 918643 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Fuites de mémoire sont un problème courant. Vous devrez peut-être essayer plusieurs étapes pour rechercher la cause spécifique d'une fuite de mémoire ou une exception de mémoire (oom avant) dans Microsoft BizTalk Server. Cet article traite des éléments importants à prendre en compte lorsque vous évaluez l'utilisation mémoire et des problèmes de mémoire possibles. Ces considérations sont les suivants :
  • Mémoire RAM physique
  • Traitement des messages volumineux
  • Utilisation de la / 3 GB commutateur
  • Utilisation de composants personnalisés
  • Quelle version de Microsoft.NET Framework, que le système est en cours d'exécution
  • Le nombre de processeurs

INTRODUCTION

Cet article décrit comment faire pour dépanner une fuite de mémoire ou une exception de mémoire insuffisante dans le processus de BizTalk Server de Microsoft BizTalk Serveur.

Plus d'informations

Le processus BizTalk Server peut être confronté à une fuite de mémoire Lorsque l'utilisation de la mémoire dans le Gestionnaire des tâches Microsoft Windows consomme plus de 50 % de la RAM physique. Une fuite de mémoire peut provoquer une exception de mémoire insuffisante Lorsque l'utilisation de mémoire augmente jusqu'à ce que le processus s'exécute hors de la mémoire système ou jusqu'à ce que le processus s'arrête de fonctionner.

Lorsque ce problème se produit, un message d'avertissement semblable le message suivant est enregistré dans le journal des événements :

Événement Type : avertissement
Catégorie d'événement : (1)
ID d'événement : 5410
Description : Une erreur s'est produite qui nécessite le service BizTalk pour terminer. Les causes les plus courantes sont une inattendue d'erreur de mémoire et une incapacité à se connecter ou une perte de connectivité à l'une des bases de données BizTalk. Le service va s'arrêter et le redémarrage automatique en 1 minute. Si la base de données problématique demeure indisponible, ce cycle se répétera.
Message d'erreur : Exception de type Exception System.OutOfMemoryException a été levée.
Source de l'erreur :
Hôte BizTalk nom : BizTalkServerApplication
Nom du service Windows : BTSSvc {DCC899FE-C62F-41BE-851A-8720B2EB9C14}

Type d'événement : avertissement
Catégorie d'événement: (1)
ID d'événement : 5410
Description : Une erreur s'est produite qui nécessite le service BizTalk pour terminer. Les causes les plus courantes sont les suivantes: 1) une inattendue d'erreur de mémoire insuffisante. OU 2) une impossibilité de se connecter ou une perte de connectivité à l'une des bases de données BizTalk. Le service va s'arrêter et le redémarrage automatique en 1 minute. Si la base de données problématique demeure indisponible, ce cycle se répétera.
Message d'erreur : Exception de type « System.OutOfMemoryException » a été levée.
Erreur source : mscorlib
Nom d'hôte BizTalk : BizTalkServerApplication
Nom du service Windows : BizTalkServerApplication $ de BTSSvc

Considérations importantes

Utilisation de mémoire vive et mémoire physique

Dans la mesure où il peut être le comportement attendu pour un processus d'environ la moitié de la RAM physique, utilisez l'utilisation de la mémoire à titre indicatif. Par exemple, si le BizTalk Server a 4 gigaoctets (Go) de RAM, et le processus BizTalk Server utilise environ 500 mégaoctets (Mo) de RAM, il peut-être pas fuite. Si le processus BizTalk Server utilise environ 1 Go de RAM, il existe peut-être une fuite de mémoire ou une situation de mémoire haute. La consommation de mémoire peut être provoquée par une procédure stockée longue ou l'orchestration. Assurez-vous que vous savez combien de mémoire l'hôte BizTalk utilise généralement pour déterminer si une condition de mémoire haute ou une fuite de mémoire se produit.

Messages volumineux

Lorsque BizTalk Server traite les messages volumineux, le système semble avoir une fuite de mémoire. Toutefois, les messages peuvent être en utilisant une grande quantité de mémoire. Pour plus d'informations sur les messages volumineux, visitez les sites Web Microsoft Developer Network (MSDN) suivants :
http://blogs.msdn.com/biztalk_core_engine/archive/2005/02/28/381700.aspx

http://msdn.Microsoft.com/en-us/library/aa560481 (BTS.10) .aspx

Envisagez également que beaucoup de mémoire peut être prévu si BizTalk Serveur traite les messages volumineux. Vous pouvez mettre à niveau votre matériel pour répondre aux exigences de performances de BizTalk Server dans votre environnement.

Combien de temps prend pour reproduire la fuite de mémoire

Fuites de mémoire peuvent se produire immédiatement ou ils peuvent s'accumuler sur heure. Les deux scénarios sont courants.

Utilisation du commutateur/3 GB sur des ordinateurs 32 bits

En règle générale, un processus peut accéder à 2 Go d'espace d'adressage virtuel. Le commutateur/3 GB est une option pour les systèmes qui nécessitent davantage de mémoire adressable. Cette option peut améliorer l'utilisation de la mémoire pour le traitement des messages. Toutefois, le commutateur/3 GB permet uniquement 1 Go de mémoire adressable pour les opérations en mode noyau. En outre, ce commutateur peut accroître le risque de manquer de mémoire en pool.

Pour plus d'informations sur la go/3 GB commutateur, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn.Microsoft.com/en-us/library/ms791558.aspx
Lorsque le commutateur/3 GB est activé sur une version 32 bits de Windows, le processus peut accéder à 3 Go d'adressage virtuel espace si le processus est grande adresse prenant en charge. Un processus est grande adresse conscient lors de l'exécutable IMAGE_FILE_LARGE_ADDRESS_AWARE indicateur est défini dans l'en-tête de l'image. Le processus BizTalk étant volumineux adresse conscient, BizTalk bénéficieront du commutateur/3 GB.

Si une instance 32 bits de l'hôte BizTalk est exécuté sur une version 64 bits de Windows (AMD64), les avantages du processus BizTalk à partir de la mémoire de 4 Go espace d'adressage BizTalk étant volumineux adresse prenant en charge. Par conséquent, le déplacement de vos applications de mémoire haute vers un serveur 64 bits peut être la meilleure solution.

Un processus de BizTalk 64 bits sur une version 64 bits de Windows (AMD64) possède 8 To de mémoire adressable.

Vous devez également envisager les octets virtuels et les octets privés utilisés par le processus. Une instance de l'hôte BizTalk (qui est un.NET Framework application) risque de recevoir une erreur de mémoire insuffisante avant la valeur octets virtuels atteindra 2 Go. Cela peut se produire même si la quantité maximale de mémoire adressable par un processus sur une version 32 bits de Windows (sans le commutateur/3 GB ) est de 2 Go. Pour savoir pourquoi cela se produit, visitez les sites Web Microsoft Developer Network (MSDN) suivants :
http://msdn.Microsoft.com/en-us/library/ms972959.aspx
http://blogs.msdn.com/tess/archive/2005/11/25/496898.aspx
Le commutateur/3 GB augmente également le nombre maximal d'octets privé du processus BizTalk à partir de 800 Mo à 1 800 Mo. Pour plus d'informations.Performances des applications NET Framework avec le commutateur/3 GB activé, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn2.Microsoft.com/en-us/library/ms998583.aspx
Le tableau suivant récapitule ces informations et inclut les limites pratiques pour les octets virtuels et les octets privés.
Réduire ce tableauAgrandir ce tableau
ProcessusWindowsMémoire adressable (avec un grand processus prenant en charge les adresse)Limite pratique pour les octets virtuelsLimite pratique pour les octets privés
32-bit32-bit2 GO1400 MO800 MO
32-bit32 bits avec/3 GB3 GO2400 MO1800 MO
32-bit64 bits4 GO3400 MO2 800 MO
64 bits64 bits8 TONon applicableNon applicable
Pour plus d'informations sur la mémoire adressable pour 32 bits et 64 bits de Windows, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn.Microsoft.com/en-us/library/aa366778.aspx
Le tableau suivant répertorie la prise en charge PAE et/3 GB pour les différentes versions de BizTalk Server.
Réduire ce tableauAgrandir ce tableau
ProduitPAE3 GO
BizTalk Server 2004OuiNon
BizTalk Server 2006OuiOui
BizTalk Server 2006 R2OuiOui
BizTalk Server 2009OuiOui
Si vous devez activer le commutateur/3 GB répondre aux exigences de performances d'un ordinateur qui est exécution de BizTalk Server, vous souhaiterez peut-être envisager d'ajouter des serveurs au groupe BizTalk. Cela permet de faire évoluer les instances hôte gourmandes en mémoire.

Composants BizTalk qui s'exécutent à l'intérieur d'un processus Internet Information Services (IIS) peut bénéficiez également lorsque le commutateur/3 GB est activé.

Le commutateur/3 GB n'est pas pris en charge sur les ordinateurs qui exécutent Windows SharePoint Services 2.0 ou versions ultérieures ou SharePoint Portal Server 2003 SP2 ou versions ultérieures. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
933560Le commutateur/3 GB Windows Server 2003 n'est pas pris en charge dans Windows SharePoint Services 2.0 ou versions ultérieures ou dans SharePoint Portal Server 2003 Service Pack 2 ou dans les versions ultérieures

Utilisation de composants personnalisés

Si vous utilisez des composants personnalisés, tels que les tuyaux ou des composants de service, Vous devez savoir que faire ces composants. Vous devez également connaître l'effet potentiel de ces composants sur l'utilisation de la mémoire. A problème de mémoire commune se produit lorsqu'un composant est transformation d'un document. Le opération de transformation est une opération nécessitant beaucoup de mémoire. Quand un document est transformé, BizTalk Server transmet le flux de messages à Microsoft.NET Classe XslTransform Framework au sein du processus BizTalk.

Un autre problème courant se produit lors de manipulation de chaînes intensive. Chaîne intensive manipulation peut consommer beaucoup de mémoire. Pour plus d'informations sur les façons de améliorer les performances, reportez-vous au site Web Microsoft Developer Network (MSDN) suivant :
http://msdn2.Microsoft.com/en-us/library/ms998547

Version de la.NET Framework

Le Microsoft.NET Framework 2.0 et le.NET Framework 1.1 ont un comportement différent de mémoire. Par conséquent, vous obtenez des résultats différents entre eux. Si vous utilisez le.NET Framework, confirmez que les dernières versions.NET Framework Service Pack 1 est installé. Ces service packs résoudre plusieurs problèmes connus de la mémoire. Pour plus d'informations, cliquez sur les numéros ci-dessous :

945757 Problèmes résolus dans le.NET Framework 2.0 Service Pack 1
867460 Liste des bogues corrigés dans le.NET Framework 1.1 Service Pack 1

Nombre de processeurs

Le common language runtime (CLR) a les poubelles suivant collecteurs (GCs) :
  • Station de travail (Mscorwks.dll)
  • Serveur (Mscorsvr.dll)
Si l'ordinateur qui exécute BizTalk Server est un système multiprocesseur, le.NET Framework utilise la version serveur du moteur d'exécution. Il s'agit du comportement par défaut. Le garbage collector serveur est conçu pour un débit maximal. En outre, le garbage collector serveur évolue pour offrir des performances très élevées. Ce garbage collector alloue de la mémoire, puis ultérieurement libère la mémoire pour fournir des performances élevées sur le système. Par conséquent, un ordinateur qui exécute BizTalk Server avec certains.NET Framework de composants semble avoir une fuite de mémoire. Toutefois, dans ce scénario, l'utilisation de mémoire haute est le comportement attendu. Si l'ordinateur manque de mémoire système, ou si le processus s'arrête en raison du manque de mémoire adressable, une fuite de mémoire peut exister.

Si l'ordinateur qui est en cours d'exécution de BizTalk Server est un système à processeur unique, le.NET Framework utilise la version de station de travail du moteur d'exécution. C'est la valeur par défaut comportement. Algorithme d'allocation garbage collector n'est pas la station de travail conçu pour la mise à l'échelle ou pour un débit maximal. Utilise ce garbage collector méthodes simultanées garbage collector. Ces méthodes sont conçues pour applications qui ont des interfaces utilisateur complexes. De telles applications peuvent nécessiter nettoyage plus agressive.

Important Cette section, la méthode ou la tâche qui va suivre contient des étapes qui vous indiquent la méthode pour modifier le Registre de Windows. Toutefois, les problèmes sérieux peuvent survenir si vous modifiez le Registre de façon incorrecte. Par conséquent, assurez-vous de suivre ces étapes avec une attention toute particulière. Afin de couvrir votre système d'une protection supplémentaire, veuillez sauvegarder le Registre avant d'intervenir pour y apporter des modifications. Ainsi, si à la suite des modifications un problème devait survenir, vous pourrez toujours restaurer le Registre. Pour obtenir des informations sur la marche à suivre pour sauvegarder ou restaurer la Base de Registre, cliquez sur le lien (numéro) ci-dessous et afficher l'article correspondant dans la Base de connaissances Microsoft :
322756 Comment sauvegarder et restaurer le Registre dans Windows
Parfois, il peut être approprié exécuter la version de station de travail du moteur d'exécution sur un système multiprocesseur. Vous pouvez utiliser la clé de Registre suivante pour passer à la version de station de travail du moteur d'exécution.

BizTalk 2006 et versions ultérieures

Créez la clé de Registre suivante CRL hébergement chaîne avec les valeurs correspondantes :

Hébergement de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR

Nom : parfum
Données: wks

BizTalk 2004

Créez la clé de Registre suivante CRL hébergement chaîne avec les valeurs correspondantes :

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc {GUID} \CLR hôte

Nom : parfum
Données: wks

Pour plus d'informations, visitez les sites Web Microsoft Developer Network (MSDN) suivants :
http://msdn2.Microsoft.com/en-us/library/ms973838

http://blogs.msdn.com/tess/archive/2008/04/17/How-Does-the-GC-Work-and-What-are-the-Sizes-of-the-different-GENERATIONS.aspx

Résolutions et des causes courantes

Utilisation de la mémoire de processus et la limitation des seuils d'utilisation de mémoire physique

L'utilisation de la mémoire de processus et la limitation des seuils d' utilisation de la mémoire physique peuvent être modifié en BizTalk Server 2006 et versions ultérieures.
  • Par défaut, le Utilisation de la mémoire de processus la limitation de seuil est défini sur 25. Si cette valeur est dépassée et l'utilisation de la mémoire du processus BizTalk est supérieure à 300 Mo, une limitation de la condition peut se produire. Sur un serveur 32 bits, vous pouvez augmenter la valeur d'utilisation mémoire processus à 50. Sur un serveur 64 bits, vous pouvez augmenter cette valeur à 100. Ceci autorise plus la consommation de mémoire par le processus de BizTalk avant la limitation se produit.
  • Le Utilisation de la mémoire physique seuil de régulation a une valeur par défaut 0. Les mesures de ce seuil de mémoire système totale. Par conséquent, si une valeur autre que 0 est configurée, une limitation de la condition peut se produire si un processus non-BizTalk à l'aide de mémoire haute.
Pour plus d'informations sur les seuils de limitation, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn.Microsoft.com/en-us/library/aa559628.aspx

Déshydratation de seuils d'accélération

Les seuils de déshydratation de mémoire par défaut peuvent entraîner beaucoup trop déshydratation lorsque orchestrations sont exécutées sur un hôte 64 bits. Pour plus d'informations sur ce problème, consultez la rubrique Propriétés par défaut de mise en attente sur le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn.Microsoft.com/en-us/library/aa560586.aspx
Remarque les hôtes 64 bits sont pris en charge dans BizTalk Server 2006 et versions ultérieures.

Sur un matériel équivalent dans une instance de l'hôte de 32 bits, déshydratation observée est nominale lorsque les mêmes orchestrations sont exécutées à l'aide de la déshydratation de mémoire par défaut seuils d'accélération.

Étant donné que l'architecture 64 bits fournit l'espace d'adressage de mémoire paginée (16 To au lieu de 4 Go), instances hôtes 64 bits sont allouées beaucoup plus de mémoire que les instances hôte 32 bits. Cela peut entraîner les seuils de limitation de la mémoire par défaut devant être dépassés.

Pour contourner ce problème, modifiez les valeurs VirtualMemoryThrottlingCriteria et PrivateMemoryThrottlingCriteria dans le fichier BTSNTSvc64.exe.config. Utilisez les octets Processus\Taille et les compteurs de l'Analyseur de performances octets Process\Private pour déterminer la quantité maximale de mémoire allouée par une instance d'orchestration.
  • Définissez la valeur de OptimalUsage pour les deux propriétés basées sur les éléments suivants :
    VirtualMemoryThrottlingCriteria : valeur d'octets \Process\Virtual + 10 %
    PrivateMemoryThrottlingCriteria : valeur d'octets \Process\Private + 10 %
  • La valeur de MaximalUsage pour les deux propriétés à la valeur de OptimalUsage + 30 %
Par exemple, si la valeur de compteur de l'Analyseur de performances octets pour une instance d'orchestration \Process\Virtual est 5,784,787,695 octets (5,517 Mo), définissez la valeur de OptimalUsage pour VirtualMemoryThrottlingCriteria Mo 6,069 (5,784,787,695 * 1.10 = 6,363,266,464.5 octets). Définissez la valeur de MaximalUsage pour VirtualMemoryThrottlingCriteria Mo 7,889 (6,363,266,464.5 * 1.30 = 8,272,246,403.85 octets).

Si la valeur du compteur de l'Analyseur de performances octets \Process\Private est 435689400 octets (415 Mo), définissez la valeur de OptimalUsage pour PrivateMemoryThrottlingCriteria à 457 Mo (435689400 * 1.10 = 479258340 octets). Définissez la valeur de MaximalUsage pour PrivateMemoryThrottlingCriteria 594 Mo (1,30 * 479258340 = 623035842).

Pour cet exemple, les valeurs suivantes est spécifiées dans le fichier BTSNTSvc64.exe.config pour réduire la limitation.
Réduire ce tableauAgrandir ce tableau
Compteur PerfMonMémoire allouéeOptimalUsageMaximalUsage
\Process\Virtual octets5784787695 octets (5517 Mo)60697889
\Process\Private octets435689400 octets (415 Mo)457594
Ces valeurs seraient ensuite être représentés dans le fichier BTSNTSvc64.exe.config comme suit :
<xlangs>
      <Configuration>
                  <Dehydration>
                              <VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
                              <PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
                  </Dehydration>
      </Configuration>
</xlangs>
Pour déterminer quelle instance de l'hôte s'exécute à l'orchestration, vous pouvez faire correspondre l'ID de processus à partir de la \BizTalk:Messaging\ID processus et les compteurs de l'Analyseur de performances de processus \Process\ID. Ensuite, vérifiez la valeur moyenne affichée pour les \Process\Virtual correspondantes octets et les compteurs de l'Analyseur de performances octets \Process\Private.

Remarque : La déshydratation élevée peut entraîner une baisse significative des performances lors de l'exécution de la base de données BizTalkMsgBoxDb sur SQL Server 2008.

BizTalk Server Service Packs et mises à jour cumulatives

BizTalk Server service packs et mises à jour cumulatives incluent les derniers correctifs. Citons notamment ceux qui affectent les problèmes connus liés à System.OutOfMemoryException.

2281783 Liste des Service Pack et mise à jour Cumulative pour BizTalk Server 2006 R2

Microsoft BizTalk Server 2004 Service Pack 2

HeapDeCommitFreeBlockThreshold

Par défaut, la valeur de clé de Registre theHeapDeCommitFreeBlockThreshold est 0. La valeur 0 signifie que le tas Gestionnaire de mémoire désaffecte chaque page 4 kilo-octets (Ko) qui devienne disponible. Désenregistrement les opérations peuvent entraîner la fragmentation de mémoire virtuelle. La taille du paramètre HeapDeCommitFreeBlockThreshold dans le Gestionnaire de tas varient selon le type de travail qui le système fait. Une taille de 0 x 00040000 est un démarrage recommandée valeur.

Tenez compte des informations suivantes avant de modifier la valeur de la
HeapDeCommitFreeBlockThreshold
Registre clé :
  • Cette modification s'applique uniquement à la fragmentation de mémoire problèmes.
  • Cette modification est à l'échelle du système. Par conséquent, la plupart des processus sera utiliser plus de mémoire au démarrage.
  • Ne prendre en compte ce changement pour les systèmes de BizTalk Serveur en tant que leur mission principale.
Pour aider à réduire la fragmentation de mémoire virtuelle, vous pouvez augmenter la taille du paramètre HeapDeCommitFreeBlockThreshold dans le Gestionnaire de tas en changeant la valeur de la clé de Registre suivante :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Gestionnaire


Nom de valeur : HeapDeCommitFreeBlockThreshold
Type valeur : REG_DWORD
Données de la valeur : 0 x 00040000 (il s'agit de la valeur de départ recommandée).
Valeur par défaut : non présent
Pour plus d'informations sur la clé de Registre HeapDeCommitFreeBlockThreshold, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
315407La clé de Registre « HeapDecommitFreeBlockThreshold »

Transcender

Lorsque BizTalk Server effectue des opérations de transformation XML sur les messages volumineux dans un port de réception, dans un port d'envoi ou de XLANG, langage XSL transforme charger la totalité du message dans la mémoire..

Pour résoudre ce problème, appliquez l'une des méthodes suivantes :
  • Diminuer le nombre de messages qui BizTalk Server processus en même temps.
  • Réduire la taille du message XML qui est en cours transformé.
L'objet System.Policy.Security.Evidence est fréquemment utilisé dans les transformations et peut consommer beaucoup de mémoire. Lorsqu'un mappage contient un fonctoid de script qui utilise inline c# (ou tout autre langage inline), l'assembly est créé dans la mémoire. L'objet System.Policy.Security.Evidence utilise l'objet de l'assembly appelant réel. Cette situation crée un objet racine qui n'est pas supprimé jusqu'au redémarrage du service BizTalk.

La plupart des fonctoids BizTalk par défaut est implémentée en tant que script inline. Ces éléments peuvent provoquer System.Byte [] objets collecter en mémoire. Pour réduire la consommation de mémoire, nous vous recommandons de placer tout mappage qui utilise ces fonctoids dans un petit ensemble. Ensuite, faire référence à cet assembly. Utilisez le tableau suivant pour déterminer les fonctoids utilisent un script inline et les fonctoids n'utilisent pas de script inline.

Dans la deuxième colonne, signifie que ce fonctoid est implémenté en tant que script inline, et qu'il entraînera System.Byte [] objets collecter en mémoire « Oui ». « Non » signifie que ce fonctoid n'est pas implémenté en tant que script inline, et qu'il n'entraîne pas System.Byte [] objets collecter en mémoire.
Réduire ce tableauAgrandir ce tableau
FonctoidsScript inline ?
Tous les fonctoids de chaîneOui
Tous les fonctoids mathématiquesOui
Tous les fonctoids logiques à l'exception de IsNilOui
Fonctoid logique de IsNilNon
Tous les fonctoids de Date/heureOui
Tous les fonctoids de ConversionOui
Tous les fonctoids scientifiquesOui
Tous les fonctoids cumulésOui
Tous les fonctoids de base de donnéesNon
Fonctoids avancésScript inline ?
Fonctoid BouclageNon
Mise à plat fonctoid Mappage des valeursNon
Fonctoid d'assertionNon
Fonctoid d'extracteur de tableNon
Fonctoid Création de tableNon
Fonctoid script avec Inline c#Oui
Fonctoid script avec Inline JScript.NETOui
Fonctoid script avec Inline Visual Basic.NETOui
Fonctoid script avec Inline XSLTNon
Fonctoid de script avec le modèle d'appel Inline XSLTNon
Fonctoid script appelant Assembly externeNon
Fonctoid Valeur nilNon
Fonctoid MappageNon
Fonctoid copie de masseNon
Fonctoid ItérationNon
Fonctoid IndexNon
Fonctoid Nombre d'enregistrementsNon
BizTalk Server 2006 et versions ultérieures considérablement améliorent la gestion de mémoire pour documents volumineux. Pour ce faire, BizTalk Server implémente un message configurable seuil de taille pour le chargement des documents en mémoire pendant les opérations de transformation. Le seuil de taille de message par défaut est 1 Mo. Pour plus d'informations sur le paramètre TransformThreshold, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn2.Microsoft.com/en-us/library/aa560481.aspx

Les valeurs d'attribut volumineux et valeurs d'élément de grande taille

Lorsque BizTalk Server exécute une opération de réception tuyau ou un pipeline d'envoi sur un document XML, la charge utile est traitée dans mémoire si le document contient un ou plusieurs des entités suivantes :
  • Valeurs des attributs de grande taille
  • Valeurs des éléments volumineux
  • Grandes balises d'attribut ou élément
Pour résoudre ce problème, limiter la taille de ces entités. Si ce méthode n'est pas possible, assurez-vous que votre instance de l'hôte BizTalk ne traite pas les multiples documents tels que ceux-ci en même temps.

Composants de pipeline personnalisé

Vous utilisez un composant de pipeline personnalisé qui charge l'ensemble flux de données en mémoire. Tous les composants qui sont inclus dans BizTalk Server, à l'exception des transformations, prend en charge en continu. Ces composants n'utilisent pas autant mémoire au cours de la diffusion en continu. Toutefois, les composants de pipeline personnalisé peuvent prend pas en charge diffusion en continu.

Diffusion en continu sous une charge importante

Envoyer des hôtes plus assez de mémoire lorsqu'elles opèrent sous une charge importante. BizTalk Server pipelines d'envoi et envoyer en continu de prise en charge des cartes. Dans diffusion en continu, chaque composant charge un petit fragment du flux en mémoire. Dans la mesure où chaque message comprend d'autres structures de données, avec un message contexte qui peut être grandes ou petites, ce comportement affecte le comportement de BizTalk Serveur sous une charge importante.

Le comportement de BizTalk Server est affecté. Étant donné que le moteur charge un nombre préconfiguré de messages. Le nombre de les messages qui charge le moteur est basé sur les valeurs qui apparaissent dans le Champs LowWaterMark et HighWaterMark de la table Adm_serviceClass. La table Adm_serviceClass est dans la base de données de gestion BizTalk. Ces valeurs contrôler le nombre de messages BizTalk Server traite ou envoie à la même temps.

La valeur HighWaterMark est le nombre total de messages qui traite le moteur en même temps. La valeur par défaut est 200 messages par UC. Par conséquent, sur un serveur à 8 processeurs, l'hôte d'envoi va essayer de traiter les messages de 1 600 (200 * 8) au le même temps. Si vous supposez que chaque message est de 50 Ko, les messages égale à 80 MO (1, 600 * 50 = 80 000 KO).

Pour résoudre ce problème, vous pouvez modifier la valeur de HighWaterMark et la valeur LowWaterMark dans la base de données. Les valeurs que vous utilisez dépendent de la taille des messages.

Pour plus d'informations sur les causes courantes d'une insuffisance de mémoire de condition, consultez la section « Mémoire croissance dans échanges BizTalk » sur le site Web Microsoft suivant :
http://blogs.msdn.com/biztalkperformance
Pour BizTalk Server 2006 et versions ultérieures, vous pouvez changer l'hôte par défaut paramètres de limitation. Pour plus d'informations sur la modification de l'hôte par défaut paramètres de limitation, visitez le site Web Microsoft Developer Network (MSDN) suivant :
http://msdn2.Microsoft.com/en-us/library/aa559628.aspx

Essayez de simplifier les choses

Si vous avez identifié une fuite de mémoire, essayez de déterminer la cause en supprimant des composants personnalisés ou en simplifiant une carte. En outre, essayez de reproduire le problème à l'aide d'une orchestration simple ou une solution simple. En règle générale, vous doit créer distinct recevoir des hôtes pour les adaptateurs de réception. Vous devez également créer des hôtes d'envoi distincts pour les adaptateurs d'envoi. Lorsque vous utilisez cette méthode, chaque carte peut exécuter dans un processus distinct. Par conséquent, si votre processus de BizTalk Server rencontre une condition de mémoire insuffisante, vous allez savoir quels composants sont impliqués.

Étapes de dépannage

Pour résoudre une condition de mémoire insuffisante, utilisez le débogage Outil de diagnostic pour surveiller les allocations de mémoire dans le temps. Les tests de diagnostic de débogage outil peut créer et analyser un fichier de vidage de fuite de mémoire (.dmp). Lorsque vous résoudre les problèmes de fuites de mémoire, l'objectif est de joindre Leaktrack.dll avant la haute condition de mémoire reproduit pour capturer la croissance de la mémoire au fil du temps. Leaktrack.dll est fourni avec l'outil Debug Diagnostics.
  1. Installez l'outil Diagnostics du débogage.

    Le fichier suivant est disponible pour téléchargement à partir du centre de téléchargement Microsoft :

    Réduire cette imageAgrandir cette image
    Télécharger
    Télécharger maintenant le package de l'outil de Diagnostic de débogage.

    Pour plus d'informations sur la marche à suivre pour télécharger les fichiers de support de Microsoft, cliquez sur le lien (numéro) ci-dessous afin d'afficher l'article correspondant dans la Base de connaissances Microsoft :
    119591 Comment faire pour obtenir les fichiers de support technique Microsoft auprès des services en ligne
    Microsoft a analysé ce fichier contre les virus. Microsoft a utilisé les logiciels de détection de virus les plus récents qui était disponible à la date à laquelle le fichier a été publié. Le fichier est stocké sur des serveurs sécurisés et donc, empêche toute modification non autorisée sur ce fichier.
  2. Utilisez l'Analyseur de performances pour collecter des données sur le système performances. Ces données peuvent fournir des indicateurs importants à propos de l'efficacité de votre environnement de BizTalk Server. L'objectif est de capturer les performances des processus au fil du temps. Par conséquent, activez l'enregistrement de l'Analyseur de performances avant la fuite de mémoire se produit.

Comment faire pour utiliser la journalisation de l'Analyseur de performances

Sélectionnez les données à ouvrir une session
Pour sélectionner les données pour vous connecter, utilisez la méthode appropriée pour votre système d'exploitation :
  • Pour Windows Server 2008 et Windows Server 2008 R2
    1. Dans Outils d'administration, ouvrez La fiabilité et Analyseur de performances.
    2. Avec le bouton droit Analyseur de performances, cliquez sur Nouveau puis cliquez sur Ensemble de collecteurs de données.
    3. Dans le Nom Tapez un nom descriptif et puis cliquez sur Suivant.
    4. Notez le répertoire racine et puis cliquez sur Suivant.
    5. Cliquez sur Démarrer cet ensemble maintenant de collecteurs de données, puis cliquez sur Terminer.
    6. Développez Ensembles de collecteurs de données, développez Défini par l'utilisateur puis sélectionnez votre fichier.
    7. Avec le bouton droit Journal du Moniteur système, puis cliquez sur Propriétés.
    8. Cliquez sur Ajouter sur la Compteurs de performance onglet Sélectionner les objets suivants, puis cliquez sur Ajouter une fois que vous sélectionnez chaque objet :
      • .Nette CLR Exceptions
      • .NET CLR Memory
      • BizTalk : messagerie
      • BizTalk:TDDS
      • Mémoire
      • Processus
      • Processeur
      • Orchestrations XLANG/s
      Si SQL Server est local, ajoutez également les objets suivants :
      • SQLServer: bases
      • SQLServer: statistiques générales
      • SQLServer: Gestionnaire
    9. Cliquez sur OK.
    10. Modification de la Valeur de l'intervalle échantillon zone à 5 secondes.

      Remarque : La valeur de l'intervalle d'échantillonnage et le temps de commencer à surveiller sont subjectives. Ces valeurs dépendent de lors de la fuite de mémoire est reproduite. Le fichier journal peut être volumineux, spécifiez un intervalle dans lequel vous pouvez obtenir les informations que vous devez avoir sans pour autant submerger le serveur.
    11. Cliquez sur OK.
    Pour arrêter la collecte de données, cliquez sur Stop sur la Action menu.
  • Pour Windows Server 2003 ou Windows XP
    1. Développez Journaux de performances et Alertes.
    2. Avec le bouton droit Journaux de compteur, puis Cliquez sur Nouveaux paramètres de journal. Le Nouveaux paramètres de journalboîte de dialogue s'affiche.
    3. Dans le Nom Tapez un texte descriptif. nom, puis cliquez sur OK.
    4. Notez l'emplacement du fichier journal. (Vous pouvez également cliquer sur le Fichiers journaux onglet, puis cliquez sur Configurer Pour modifier l'emplacement du fichier journal.)
    5. Cliquez sur Ajouter des compteurs.
    6. Sélectionnez Tous les compteurs et Tous les instances.
    7. Dans le Objet de performance liste, sélectionnez les objets suivants. Cliquez sur Ajouter une fois que vous sélectionnez chaque objet.
      • .Nette CLR Exceptions
      • .NET CLR Memory
      • BizTalk : messagerie
      • BizTalk:TDDS
      • Mémoire
      • Processus
      • Processeur
      • Orchestrations XLANG/s
      Si SQL Server est local, ajoutez également les objets suivants :
      • SQLServer: bases
      • SQLServer: statistiques générales
      • SQLServer: Gestionnaire
    8. Cliquez sur Fermer.
    9. Modifiez la valeur de Échantillonnage des données Intervalle à 5 secondes.

      Remarque : La valeur de l'intervalle d'échantillonnage des données et le temps de commencer à surveiller sont subjectives. Ces valeurs dépendent de lors de la fuite de mémoire est reproduite. Le fichier journal peut être volumineux, spécifiez un intervalle dans lequel vous pouvez obtenir les informations que vous devez avoir sans pour autant submerger le serveur.
    10. Cliquez sur OK.
    Pour arrêter la collecte de données, cliquez droit sur le nom du journal de compteur, puis sur Stop.
Obtenir le fichier de vidage
Pour obtenir le fichier de vidage, appliquez l'une des méthodes suivantes :
  • Méthode 1: automatique
    Création d'une règle de la mémoire et la fuite de mémoire avec DebugDiag est l'approche recommandée pour capturer une image mémoire. La règle de fuite de mémoire et les associe automatiquement Leaktrack.dll. Ceci est utilisé pour effectuer le suivi des allocations de mémoire. Pour créer la règle de la mémoire et la fuite de mémoire, procédez comme suit :
    1. Démarrer le débogage Outil de diagnostic 1.1.
    2. Sélectionnez Mémoire et une fuite de handles, et puis cliquez sur Suivant.
    3. Sélectionnez la Sein de BTSNtSvc.exe processus, puis cliquez sur Suivant.
    4. Dans la page Configurer la règle de fuite, procédez comme suit :
      1. Cliquez pour sélectionner le Démarrer mémoire suivi immédiatement lorsque la règle est activée. case à cocher. Sinon, vous pouvez spécifier un temps de préchauffage avant LeakTrack.dll est injecté dans le processus sein de BTSNTSvc.exe.
      2. Cliquez sur Configurer, puis effectuez les opérations suivantes :
        • Confirmez que Auto-créer une règle d'arrêt est sélectionnée. En sélectionnant cette option, un vidage de mémoire sera créé automatiquement si le processus sein de BTSNTSvc.exe s'arrête.
        • Cliquez pour sélectionner le Générer un userdump lorsqu'atteignent octets virtuels case à cocher et conserver la valeur par défaut 1024.
        • Cliquez pour sélectionner le et chaque objet supplémentaire case à cocher et conserver la valeur par défaut de 200.
        En sélectionnant les octets virtuels atteindre option, un vidage de mémoire sera automatiquement créé quand les octets virtuels utilise 1024 Mo. Si les octets virtuels augmente de 200 Mo, une autre image mémoire partielle sera automatiquement créé.
      3. Cliquez sur Enregistrer & Fermer.
      4. Cliquez sur suivant.
    5. Dans la page Sélectionnez Dump emplacement et nom de la règle, cliquez sur Suivant.

      Remarque : Vous pouvez également modifier le chemin d'accès du fichier de vidage dans le Emplacement Userdump case sur cette page.
    6. Cliquez sur Terminer Pour activer la règle maintenant.
    Remarque : L'état de la règle est suivi maintenant. Chaque fois qu'un vidage de mémoire est créé, la valeur augmente dans la colonne Userdump Count dans l'onglet règles. L'emplacement de vidage de mémoire par défaut est C:\Program Files\DebugDiag\Logs.
  • Méthode 2: manuel
    Vous pouvez également manuellement attacher Leaktrack.dll et obtenir manuellement le fichier de vidage mémoire. Cela permet de contrôler quand le vidage de mémoire est créé. Pour ce faire, procédez comme suit :
    1. Démarrer le débogage Outil de diagnostic 1.1.
    2. Cliquez sur le Processus onglet.
    3. Cliquez droit sur le Sein de BTSNtSvc.exe processus, puis cliquez sur Moniteur de fuites.
    4. Dans le Outil Diagnostics du débogage boîte de dialogue Cliquez sur Oui, puis cliquez sur OK.
    Créer une règle de blocage pour surveiller le même processus sein de Btsntsvc.exe dans le cas où le processus s'arrête avant de créer l'image mémoire partielle :
    1. Démarrer Outil Debug Diagnostics 1.1.
    2. Sélectionnez Crash, puis cliquez sur Suivant.
    3. Sélectionnez Un processus spécifique, puis cliquez sur Suivant.
    4. Sélectionnez le même processus sein de Btsntsvc.exe et puis cliquez sur Suivant.
    5. Sur la Configuration avancée (facultative) page, cliquez sur Suivant.
    6. Dans le Sélectionnez l'emplacement de vidage et le nom de règle (facultatif) boîte de dialogue, cliquez sur Suivant.
    7. Sélectionnez Activer la règle maintenant, puis cliquez sur Terminer.
    Lorsque le processus atteint 60 à 80 pour cent de mémoire vive, cliquez droit sur le processus sein de Btsntsvc.exe et puis cliquez sur Créer Userdump complet. Si le processus BizTalk s'arrête avant de créer le vidage utilisateur, la règle d'arrêt doit prises en compte et créer l'image mémoire.
Arrêter l'enregistrement de l'Analyseur de performances
Si vous capturez un vidage de la mémoire et des données de l'Analyseur de performances, arrêter l'Analyseur de performances enregistrement environ deux minutes après que le vidage de mémoire est créé.
Analyser le fichier de vidage
Pour vous aider à déterminer la cause d'une fuite de mémoire, vous pouvez utiliser le débogage Outil de diagnostic pour analyser le fichier de vidage. Pour ce faire, procédez comme suit :
  1. Cliquez sur le Analyse avancéeonglet.
  2. Cliquez sur Ajouter des fichiers de données, puis recherchez le fichier .dmp.
  3. Sélectionnez la Analyse de la pression de mémoirescript, puis cliquez sur Démarrer l'analyse.
Par défaut, un fichier de rapport d'analyse (.mht) sera créé dans le dossier C:\Program Files\DebugDiag\Reports, lorsque l'analyse est terminée. Le fichier de rapport apparaîtra également dans votre navigateur. Le fichier de rapport contient les résultats de l'analyse. En outre, le fichier de rapport peut contenir recommandations pour savoir comment résoudre la fuite de mémoire.

Si vous utilisez personnalisé DLL, vous pouvez ajouter le chemin de symbole des fichiers .pdb personnalisé pour l'analyse. Pour faire cela, procédez comme suit :
  1. Ouvrez l'outil Debug Diagnostics.
  2. Sur la Outils menu, cliquez sur Options et paramètres.
  3. Dans le Chemin de recherche de symboles pour le débogageTapez le chemin de symbole.
Si vous souhaitez aide analyse le fichier de vidage, contactez Microsoft Services de Support client. Pour une liste complète des Services de Support client informations sur les coûts de support et les numéros de téléphone, consultez le site Web Site Web de Microsoft :
http://support.Microsoft.com/contactus/?ws=support
Avant de contacter le Support technique, compressez le fichier de vidage, le journal de l'Analyseur de performances, le fichier de rapport d'analyse et les journaux d'événements mis à jour (fichiers .evt). Vous devrez peut-être envoyer que ces fichiers pour un BizTalk Server ingénieur de support.

Propriétés

Numéro d'article: 918643 - Dernière mise à jour: mercredi 13 juin 2012 - Version: 2.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft BizTalk Server Branch 2010
  • Microsoft BizTalk Server Developer 2010
  • Microsoft BizTalk Server Enterprise 2010
  • Microsoft BizTalk Server Standard 2010
  • Microsoft BizTalk Server 2009 Branch
  • Microsoft BizTalk Server 2009 Developer
  • Microsoft BizTalk Server 2009 Enterprise
  • Microsoft BizTalk Server 2009 Standard
  • Microsoft BizTalk Server 2006 R2 Branch
  • Microsoft BizTalk Server 2006 R2 Developer Edition
  • Microsoft BizTalk Server 2006 R2 Enterprise Edition
  • Microsoft BizTalk Server 2006 R2 Standard Edition
  • Microsoft BizTalk Server 2006 Enterprise Edition
  • Microsoft BizTalk Server 2006 Developer Edition
  • Microsoft BizTalk Server 2006 Standard Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Standard Edition
Mots-clés : 
kbhowto kbmt KB918643 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 918643
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com