Cómo solucionar una pérdida de memoria o una excepción de falta de memoria en el proceso BizTalk Server memoria

En este artículo se describe cómo solucionar problemas de pérdida de memoria o una excepción de falta de memoria en el proceso BizTalk Server de Microsoft BizTalk Server.

Versión del producto original:   BizTalk Server 2010, 2009
Número KB original:   918643

Resumen

Las pérdidas de memoria son un problema común. Es posible que tenga que probar varios pasos para encontrar la causa específica de una pérdida de memoria o una excepción de falta de memoria (OOM) en Microsoft BizTalk Server. En este artículo se de abordan aspectos importantes a tener en cuenta al evaluar el uso de la memoria y los posibles problemas relacionados con la memoria. Estas consideraciones incluyen lo siguiente:

  • RAM física
  • Procesamiento de mensajes grandes
  • Uso del modificador /3GB
  • Uso de componentes personalizados
  • ¿Qué versión de Microsoft .NET Framework se está ejecutando el sistema?
  • El número de procesadores

El BizTalk Server puede experimentar una pérdida de memoria cuando el uso de memoria en El Administrador de tareas de Microsoft Windows consume más del 50 por ciento de la RAM física. Una pérdida de memoria puede provocar una excepción de falta de memoria cuando aumenta el uso de memoria hasta que el proceso se queda sin memoria del sistema o hasta que el proceso deja de funcionar. Para este problema, tenga en cuenta lo siguiente:

Uso físico de memoria RAM y memoria

Dado que puede ser un comportamiento esperado para que un proceso use aproximadamente la mitad de la RAM física, use el uso de memoria como guía. Por ejemplo, si el BizTalk Server tiene 4 gigabytes (GB) de RAM y el proceso de BizTalk Server usa unos 500 megabytes (MB) de RAM, es posible que no haya pérdidas. Si el BizTalk Server usa aproximadamente 1 GB de RAM, puede haber una pérdida de memoria o una situación de memoria alta. El consumo de memoria puede deberse a un procedimiento almacenado de larga ejecución o a una orquestación. Asegúrese de saber cuánta memoria usa normalmente el host de BizTalk para determinar si se está produciendo una pérdida de memoria o una condición de memoria alta.

Mensajes grandes

Cuando BizTalk Server grandes mensajes, el sistema parece tener una pérdida de memoria. Sin embargo, es posible que los mensajes utilicen una gran cantidad de memoria.

Además, tenga en cuenta que se puede esperar un uso elevado de la memoria si BizTalk Server está procesando mensajes grandes. Es posible que desee actualizar el hardware para cumplir los requisitos de rendimiento de BizTalk Server en su entorno.

Cuánto tiempo se tarda en reproducir la pérdida de memoria

Las pérdidas de memoria pueden producirse inmediatamente o pueden acumularse con el tiempo. Ambos escenarios son comunes.

Uso del modificador /3GB en equipos de 32 bits

Normalmente, un proceso puede tener acceso a 2 GB de espacio de direcciones virtual. El modificador /3GB es una opción para sistemas que requieren más memoria direccionable. Esta opción puede mejorar el uso de memoria para procesar mensajes. Sin embargo, el modificador /3GB solo permite 1 GB de memoria direccionable para las operaciones del modo kernel. Además, este modificador puede aumentar el riesgo de que se quedándose sin memoria del grupo.

Cuando el modificador /3GB está habilitado en una versión de 32 bits de Windows, el proceso puede tener acceso a 3 GB de espacio de direcciones virtuales si el proceso es compatible con direcciones grandes. Un proceso tiene en cuenta la dirección grande cuando el archivo ejecutable IMAGE_FILE_LARGE_ADDRESS_AWARE marca establecida en el encabezado de la imagen. Dado que el proceso de BizTalk es consciente de la dirección grande, BizTalk se beneficiará del modificador /3GB.

Si una instancia de host de BizTalk de 32 bits se ejecuta en una versión de 64 bits de Windows (AMD64), el proceso de BizTalk se beneficia del espacio de direcciones de memoria de 4 GB porque BizTalk es compatible con direcciones grandes. Por lo tanto, mover las aplicaciones de memoria alta a un servidor de 64 bits puede ser la mejor solución.

Un proceso de BizTalk de 64 bits en una versión de 64 bits de Windows (AMD64) tiene 8 TB de memoria direccionable.

También debe tener en cuenta los bytes virtuales y los bytes privados usados por el proceso. Una instancia de host de BizTalk (que es una aplicación .NET Framework) puede recibir un error de falta de memoria antes de que el valor bytes virtuales alcance los 2 GB. Esta situación puede producirse aunque la memoria máxima direccionable por un proceso en una versión de 32 bits de Windows (sin el modificador /3 GB) es de 2 GB. Para obtener una explicación de por qué se puede producir esta situación, visite el siguiente sitio web de Microsoft Developer Network (MSDN):
ASP.NET supervisión del rendimiento y Cuándo avisar a los administradores

El modificador /3GB también aumenta los bytes privados máximos del proceso de BizTalk de 800 MB a 1800 MB. Para obtener más información .NET Framework rendimiento de la aplicación con el modificador /3GB habilitado, visite chapter 17: Tuning .NET Application Performance.

En la tabla siguiente se resume esta información e incluye los límites prácticos para bytes virtuales y bytes privados.

Proceso Windows Memoria direccionable (con un proceso grande para la dirección) Límite práctico para bytes virtuales Límite práctico para bytes privados
32 bits 32 bits 2 GB 1400 MB 800 MB
32 bits 32 bits con /3 GB 3 GB 2400 MB 1800 MB
32 bits 64 bits 4 GB 3400 MB 2800 MB
64 bits 64 bits 8 TB No aplicable No aplicable

Para obtener más información acerca de la memoria direccionable para versiones de 32 bits frente a Windows de 64 bits, visite Límites de memoria para Windows y Windows versiones de servidor.

En la tabla siguiente se enumeran pae y 3 GB de compatibilidad para diferentes versiones de BizTalk Server.

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

Si debe habilitar el modificador /3GB para cumplir los requisitos de rendimiento de un equipo que ejecuta BizTalk Server, puede considerar la posibilidad de agregar servidores al grupo de BizTalk. Esto le permite escalar horizontalmente las instancias de host que consumen mucha memoria.

Los componentes de BizTalk que se ejecutan dentro de un proceso Internet Information Services (IIS) también pueden beneficiarse cuando el modificador /3GB está habilitado.

El modificador /3GB no se admite en equipos que ejecutan Windows SharePoint Services 2.0 o versiones posteriores o SharePoint Portal Server 2003 SP2 o versiones posteriores. El modificador Windows Server 2003 /3GB no se admite en Windows SharePoint Services 2.0 ni en versiones posteriores o en SharePoint Portal Server 2003 Service Pack 2 o en versiones posteriores.

Uso de componentes personalizados

Si usa componentes personalizados, como canalizaciones o componentes de servicio, debe saber qué hacen estos componentes. También debe conocer el efecto potencial de estos componentes en el uso de memoria. Un problema de memoria común se produce cuando un componente está transformando un documento. La operación de transformación es una operación que consume mucha memoria. Cuando se transforma un documento, BizTalk Server la secuencia de mensajes a la clase .NET Framework XslTransform microsoft dentro del proceso de BizTalk.

Otro problema común se produce cuando hay una manipulación intensiva de cadenas. La manipulación intensiva de cadenas puede consumir muchas memorias. Para obtener más información acerca de las formas de mejorar el rendimiento, visite Mejorar el rendimiento del código administrado.

Versión de la .NET Framework

Microsoft .NET Framework 2.0 y .NET Framework 1.1 tienen un comportamiento de memoria diferente. Por lo tanto, puede ver resultados variables entre ellos. Si está usando el .NET Framework, confirme que el último .NET Framework Service Pack 1 está instalado. Estos service packs abordan varios problemas de memoria conocidos.

Número de procesadores

Common Language Runtime (CLR) tiene los siguientes recolectores de elementos no utilizados (GCs):

  • Estación de trabajo (Mscorwks.dll)
  • Servidor (Mscorsvr.dll)

Si el equipo que se ejecuta BizTalk Server es un sistema multiprocesador, el .NET Framework usa la versión del servidor del motor de ejecución. Se trata del comportamiento predeterminado. El recolector de elementos no utilizados del servidor está diseñado para el rendimiento máximo. Además, el recolector de elementos no utilizados del servidor se escala para proporcionar un alto rendimiento. Este recolector de elementos no utilizados asigna memoria y, posteriormente, libera memoria para proporcionar un alto rendimiento en el sistema. Por lo tanto, un equipo que se BizTalk Server con algunos componentes .NET Framework parece tener una pérdida de memoria. Sin embargo, en este escenario, el alto uso de memoria es el comportamiento esperado. Si el equipo se queda sin memoria del sistema o si el proceso deja de funcionar debido a una memoria direccionable insuficiente, puede existir una condición de pérdida de memoria.

Si el equipo que ejecuta BizTalk Server es un único sistema de procesador, el .NET Framework usa la versión de estación de trabajo del motor de ejecución. Es el comportamiento predeterminado. El algoritmo de asignación de recolección de elementos no utilizados de estación de trabajo no está diseñado para el escalado ni para el rendimiento máximo. Este recolector de elementos no utilizados usa métodos de recolección de elementos no utilizados simultáneos. Estos métodos están diseñados para aplicaciones que tienen interfaces de usuario complejas. Estas aplicaciones pueden requerir una recolección de elementos no utilizados más agresiva.

Importante

Esta sección, método o tarea contiene pasos que le indican cómo modificar el Registro. Pero es posible que se produzcan problemas graves si modifica el Registro incorrectamente. Por lo tanto, asegúrese de seguir estos pasos cuidadosamente. Para mayor protección, cree una copia de seguridad del registro antes de modificarlo. Después, puede restaurar el registro si se produce un problema. Para obtener más información sobre cómo hacer una copia de seguridad del Registro y cómo restaurarlo, consulte Cómo realizar una copia de seguridad del Registro y restaurarlo en Windows.

A veces, puede ser apropiado ejecutar la versión de estación de trabajo del motor de ejecución en un sistema multiprocesador. Puede usar la siguiente clave del Registro para cambiar a la versión de estación de trabajo del motor de ejecución.

BizTalk 2006 y versiones posteriores

Cree la siguiente clave CRL Hosting del Registro String con los valores correspondientes:

  • Clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostName\CLR Hosting
  • Nombre del valor: Flavor
  • Datos de valor: wks

BizTalk 2004

Cree la siguiente clave CRL Host del Registro String con los valores correspondientes:

  • Clave: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc{GUID }\CLR Hosting
  • Nombre del valor: Flavor
  • Datos de valor: wks

Para obtener más información, visite Consideraciones de rendimiento para Run-Time Technologies en el .NET Framework.

Las siguientes son causas y resoluciones comunes:

Umbrales de limitación de uso de memoria física y proceso

Los umbrales de limitación de uso de memoria física y uso de la memoria física se pueden cambiar en BizTalk Server 2006 y en versiones posteriores.

  • De forma predeterminada, el umbral de limitación de uso de memoria de proceso está establecido en 25. Si se supera este valor y el uso de memoria del proceso de BizTalk supera los 300 MB, puede producirse una condición de limitación. En un servidor de 32 bits, puede aumentar el valor de uso de memoria de proceso a 50. En un servidor de 64 bits, puede aumentar este valor a 100. Esto permite un mayor consumo de memoria por parte del proceso de BizTalk antes de que se produzca la limitación.

  • El umbral de limitación de uso de memoria física tiene un valor predeterminado de 0. Este umbral mide la memoria total del sistema. Por lo tanto, si se configura un valor distinto de 0, puede producirse una condición de limitación si un proceso que no es BizTalk usa memoria alta.

Umbrales de limitación de la deshidratación

Los umbrales predeterminados de dihidratación de memoria pueden provocar demasiada dihidratación cuando se ejecutan orquestaciones en un host de 64 bits. Para obtener más información acerca de este problema, vea Propiedades predeterminadas de la deshidratación.

Nota

Los hosts de 64 bits se admiten BizTalk Server 2006 y versiones posteriores.

En hardware equivalente en una instancia de host de 32 bits, la deshidratación observada es nominal cuando se ejecutan las mismas orquestaciones mediante los umbrales predeterminados de limitación de la limitación de la memoria de la memoria.

Dado que la arquitectura de 64 bits proporciona espacio de direcciones de memoria expandido (16 TB en lugar de 4 GB), las instancias de host de 64 bits tienen asignada más memoria que las instancias de host de 32 bits. Esto puede hacer que se superen los umbrales de limitación de memoria predeterminados.

Para evitar este comportamiento, cambie los valores VirtualMemoryThrottlingCriteria y PrivateMemoryThrottlingCriteria en el BTSNTSvc64.exe.config archivo. Use los contadores \Process\Virtual Bytes y \Process\Private Bytes Performance Monitor para determinar la mayor cantidad de memoria asignada por una instancia de orquestación.

  • Establezca el valor OptimalUsage para ambas propiedades en función de lo siguiente:

    • VirtualMemoryThrottlingCriteria: \Process\Virtual Bytes value + 10%
    • PrivateMemoryThrottlingCriteria: \Process\Private Bytes value + 10%
  • Establecer MaximalUsage para ambas propiedades en el valor OptimalUsage + 30%

Por ejemplo, si el valor del contador \Process\Virtual Byte Performance Monitor para una instancia de orquestación es 5.784.787.695 bytes (5.517 MB), establezca el valor OptimalUsage para VirtualMemoryThrottlingCri hasta 6.069 MB (5.784.787.695 * 1,10 = 6.363.266.464,5 bytes).

Establezca el valor MaximalUsage para VirtualMemoryThrottlingCriteria en 7.889 MB (6.363.266.464,5 * 1,30 = 8.272.246.403,85 bytes).

Si el valor del contador \Process\Private Bytes Performance Monitor es 435689400 bytes (415 MB), establezca el valor OptimalUsage para PrivateMemoryThrottlingCriteria en 457 MB (435689400 * 1,10 = 479258340 bytes).

Establezca el valor MaximalUsage para PrivateMemoryThrottlingCriteria en 594 MB (479258340 * 1,30 = 623035842).

En este ejemplo, se especificarán los siguientes valores en el BTSNTSvc64.exe.config para reducir la limitación.

Contador monitor de rendimiento Memoria asignada OptimalUsage MaximalUsage
\Process\Virtual Bytes 5.784.787.695 bytes (5517 MB) 6069 7889
\Process\Private Bytes 435.689.400 bytes (415 MB) 457 594

A continuación, estos valores se representarán en el BTSNTSvc64.exe.config siguiente:

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

Para determinar qué instancia de host ejecuta la orquestación, puede hacer coincidir el proceso de identificador desde los contadores \BizTalk: Messaging\ID Process y \Process\ID Process Performance Monitor. A continuación, compruebe el valor Promedio que se muestra para los contadores \Process\Virtual Bytes y \Process\Private Bytes Performance Monitor correspondientes.

Nota

Información que el usuario debe observar incluso si se desanguióLa alta dehidratación BizTalkMsgBoxDb puede provocar una disminución significativa del rendimiento cuando la base de datos se ejecuta en SQL Server 2008.

BizTalk Server service pack y actualizaciones acumulativas

BizTalk Server service packs y actualizaciones acumulativas incluyen las correcciones más recientes. Estos incluyen aquellos que afectan a problemas conocidos System.OutOfMemoryException .

HeapDeCommitFreeBlockThreshold

De forma predeterminada, el valor HeapDeCommitFreeBlockThreshold de la clave del Registro es 0. Un valor de 0 significa que el administrador de montón elimina la confirmación de cada página de 4 kilobytes (KB) que esté disponible. Las operaciones de des confirmación pueden provocar la fragmentación de la memoria virtual. El tamaño de la configuración HeapDeCommitFreeBlockThreshold en el administrador de montón dependerá del tipo de trabajo que esté realizando el sistema. Un tamaño de 0x00040000 es un valor inicial recomendado.

Tenga en cuenta la siguiente información antes de cambiar el valor de la clave HeapDeCommitFreeBlockThreshold del Registro:

  • Este cambio solo se aplica a problemas de fragmentación de memoria.
  • Este cambio es de todo el sistema. Por lo tanto, la mayoría de los procesos usarán más memoria al iniciarse.
  • Solo tenga en cuenta este cambio para los sistemas que BizTalk Server como su misión principal.

Para ayudar a reducir la fragmentación de la memoria virtual, HeapDeCommitFreeBlockThreshold puede aumentar el tamaño de la configuración en el administrador de montón cambiando el valor de la siguiente clave del Registro en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager:

  • Nombre del valor: HeapDeCommitFreeBlockThreshold
  • Tipo de valor: REG_DWORD
  • Datos de valor: 0x00040000 (es el valor inicial recomendado).
  • Valor predeterminado: no presente

Operaciones de transformación

Cuando BizTalk Server operaciones de transformación XML en mensajes bastante grandes en un puerto de recepción, XLANGen un puerto de envío o en , transformaciones XSL cargan todo el mensaje en la memoria.

Para solucionar este problema, use uno de los métodos siguientes:

  • Reduzca el número de mensajes que BizTalk Server procesos al mismo tiempo.
  • Reduzca el tamaño del mensaje XML que se está transformando.

El System.Policy.Security.Evidence objeto se usa con frecuencia en transformaciones y puede consumir mucha memoria. Cuando un mapa contiene un scripting functoid que usa secuencias de comandos C# (o cualquier otro idioma en línea), el ensamblado se crea en la memoria. El System.Policy.Security.Evidence objeto usa el objeto del ensamblado de llamada real. Esta situación crea un objeto raíz que no se elimina hasta que se reinicia el servicio biztalk.

La mayoría del BizTalk predeterminado functoids se implementa como script en línea. Estos elementos pueden hacer que System.Byte[] los objetos se recopile en la memoria. Para minimizar el consumo de memoria, se recomienda colocar cualquier mapa que los use functoids en un ensamblado pequeño. A continuación, haga referencia a ese ensamblado. Use el siguiente gráfico para determinar qué functoids usar script en línea y functoids cuáles no usan script en línea.

En la segunda columna, significa functoid que se implementa como script en línea y System.Byte[] que hará que los objetos se recopile en la memoria. No significa que esto functoid no se implemente como script en línea y System.Byte[] que no hará que los objetos se recopile en la memoria.

Functoids ¿Script en línea?
Todos los functoids de cadena
Todos los functoids matemáticos
Todos los functoids lógicos excepto IsNil
Logical IsNil Functoid No
Todos los functoids de fecha y hora
Todos los Functoids de conversión
Todos los functoids científicos
Todos los functoids acumulativos
Todos los functoids de base de datos No
Functoids avanzados ¿Script en línea?
Bucle de Functoid No
Value-Mapping Flattening Functoid No
Assert Functoid No
Functoid extractor de tablas No
Functoid de bucle de tabla No
Scripting Functoid con Inline C #
Scripting Functoid con Inline JScript.NET
Scripting Functoid con Visual Basic .NET
Scripting Functoid con XSLT en línea No
Scripting Functoid con plantilla de llamada XSLT en línea No
Scripting Functoid calling External Assembly No
Functoid de valor nulo No
Functoid de asignación de valores No
Functoid de copia masiva No
Functoid de iteración No
Index Functoid No
Functoid de recuento de registros No

BizTalk Server 2006 y versiones posteriores mejoran significativamente la administración de memoria para documentos grandes. Para ello, BizTalk Server un umbral de tamaño de mensaje configurable para cargar documentos en la memoria durante las operaciones de transformación. El umbral de tamaño de mensaje predeterminado es 1 MB. Para obtener más información acerca de la configuración TransformThreshold, visite How BizTalk Server Processes Large Messages.

Valores de atributo grandes y valores de elementos grandes

Cuando BizTalk Server una canalización de recepción o una canalización de envío en un documento XML, la carga se procesa en la memoria si el documento contiene una o varias de las siguientes entidades:

  • Valores de atributo grandes
  • Valores de elementos grandes
  • Etiquetas de atributo o elemento grandes

Para resolver este problema, limite el tamaño de estas entidades. Si este método no es posible, asegúrese de que la instancia host de BizTalk no procese varios documentos como estos al mismo tiempo.

Componentes de canalización personalizados

Está usando un componente de canalización personalizado que carga toda la secuencia en la memoria. Todos los componentes que se incluyen con BizTalk Server, excepto las transformaciones, admiten streaming. Estos componentes no usan tanta memoria durante el streaming. Sin embargo, es posible que los componentes de canalización personalizados no admitan streaming.

Streaming bajo mucha tensión

Los hosts de envío se han quedo sin memoria cuando funcionan con mucha tensión. BizTalk Server canalizaciones y envía adaptadores que admiten streaming. En streaming, cada componente carga un pequeño fragmento de la secuencia en la memoria. Dado que cada mensaje incluye otras estructuras de datos, junto con un contexto de mensaje que puede ser significativo o pequeño, este comportamiento afecta al comportamiento de BizTalk Server bajo un estrés intenso.

El comportamiento de BizTalk Server se ve afectado porque el motor carga un número de mensajes preconfigurado. El número de mensajes que carga el motor se basa en los valores que aparecen en el campo LowWaterMark y el campo HighWaterMark de la Adm_serviceClass tabla. La Adm_serviceClass tabla se encuentra en la base de datos de administración de BizTalk. Estos valores controlan el número de mensajes que BizTalk Server o envía al mismo tiempo.

El valor de HighWaterMark es el número total de mensajes que procesa el motor al mismo tiempo. El valor predeterminado es 200 mensajes por CPU. Por lo tanto, en un servidor de 8 procesadores, el host de envío intentará procesar 1.600 mensajes (200 * 8) al mismo tiempo.

Si asume que cada mensaje es de 50 KB, los mensajes son iguales a 80 MB (1.600 * 50=80.000 KB).

Para resolver este problema, puede cambiar el valor HighWaterMark y el valor LowWaterMark en la base de datos. Los valores que se usan dependen del tamaño de los mensajes. Para BizTalk Server 2006 y versiones posteriores, puede cambiar la configuración predeterminada de limitación de host.

Intente simplificar el problema

Si ha identificado una pérdida de memoria, intente determinar la causa quitando componentes personalizados o simplificando un mapa. Además, intente reproducir el problema mediante una orquestación sencilla o una solución sencilla. Normalmente, debe crear hosts de recepción independientes para adaptadores de recepción. También debe crear hosts de envío independientes para adaptadores de envío. Al usar este método, cada adaptador puede ejecutarse en un proceso independiente. Por lo tanto, si el BizTalk Server experimenta una condición de falta de memoria, sabrá qué componentes están implicados.

Pasos para la solución de problemas

Para solucionar problemas de falta de memoria, use la herramienta Depurar diagnósticos para supervisar las asignaciones de memoria con el tiempo. La herramienta Depurar diagnósticos puede crear y analizar un archivo de volcado de pérdida de memoria (.dmp). Al solucionar problemas de pérdidas de memoria, el objetivo es __ adjuntarLeaktrack.dllantes de que la condición de memoria alta se reproduzca para capturar el crecimiento de la memoria con el tiempo. Leaktrack.dll se incluye con la herramienta Depurar diagnósticos.

  1. Instale la Herramienta de diagnóstico de depuración.

    El siguiente archivo está disponible para su descarga desde el Centro de descarga de Microsoft:
    Descargue el paquete de la herramienta de diagnóstico de depuración ahora

    Para obtener más información acerca de cómo descargar archivos de soporte técnico de Microsoft, vea How to obtain Microsoft support files from online services.

    Microsoft ha examinado este archivo en busca de virus. Microsoft usó el software de detección de virus más actual que estaba disponible en la fecha en que se publicó el archivo. El archivo se almacena en servidores mejorados para la seguridad que ayudan a evitar cambios no autorizados en el archivo.

  2. Use el Monitor de rendimiento para recopilar datos sobre el rendimiento del sistema. Estos datos pueden proporcionar indicadores importantes sobre la eficacia de su BizTalk Server entorno. El objetivo es capturar el rendimiento del proceso con el tiempo. Por lo tanto, habilite el registro del Monitor de rendimiento antes de que se produzca la pérdida de memoria.

Cómo usar el registro del Monitor de rendimiento

En las secciones siguientes se describe cómo usar el registro del monitor de rendimiento.

Seleccionar los datos para registrar

Para seleccionar los datos que desea registrar, use el método adecuado para el sistema operativo:

  • Para Windows Server 2008 y Windows Server 2008 R2
    1. En Herramientas administrativas, abra El Monitor de confiabilidad y rendimiento.

    2. Haga clic con el botón secundario en Monitor de rendimiento, haga clic en Nuevo y, a continuación, haga clic en Conjunto de recopiladores de datos.

    3. En el cuadro Nombre, escriba un nombre descriptivo y, a continuación, haga clic en Siguiente.

    4. Observe el directorio raíz y, a continuación, haga clic en Siguiente.

    5. Haga clic en Iniciar este conjunto de recopiladores de datos ahora y, a continuación, haga clic en Finalizar.

    6. Expanda Conjuntos de recopiladores de datos, expanda Definido por el usuario y, a continuación, seleccione el archivo.

    7. Haga clic con el botón secundario en Registro del monitor del sistema y, a continuación, haga clic en Propiedades.

    8. Haga clic en Agregar en la pestaña Contadores de rendimiento. Seleccione los siguientes objetos y, a continuación, haga clic en Agregar después de seleccionar cada objeto:

      • Excepciones CLR de .Net
      • Memoria CLR de .Net
      • BizTalk: mensajería
      • BizTalk: TDDS
      • Memoria
      • Proceso
      • Procesador
      • Orquestaciones XLANG/s

      Si SQL Server local, agregue también los siguientes objetos:

      • SQLServer: bases de datos
      • SQLServer: Estadísticas generales
      • SQLServer: Administrador de memoria
    9. Haga clic en Aceptar.

    10. Cambie el cuadro Valor de intervalo de muestra a 5 segundos.

      Nota

      El valor intervalo de muestra y el tiempo para empezar a supervisar son subjetivos. Estos valores dependen de cuándo se reproduzca la pérdida de memoria. Dado que el archivo de registro puede ser grande, especifique un intervalo en el que pueda obtener la información que debe tener sin agobiar el servidor.

    11. Haga clic en Aceptar.

Para detener la recopilación de datos, haga clic en Detener en el menú Acción.

  • Para Windows Server 2003 o para Windows XP

    1. Expanda Registros y alertas de rendimiento.

    2. Haga clic con el botón secundario en Registros de contador y, a continuación, haga clic en Nuevo registro Configuración. Aparece el cuadro de diálogo Nuevo Configuración registro.

    3. En el cuadro Nombre, escriba un nombre descriptivo y, a continuación, haga clic en Aceptar.

    4. Tenga en cuenta la ubicación del archivo de registro. (También puede hacer clic en la pestaña Archivos de registro y, a continuación, hacer clic en Configurar para cambiar la ubicación del archivo de registro).

    5. Haga clic en Agregar contadores.

    6. Seleccione Todos los contadores y Todas las instancias.

    7. En la lista Objeto de rendimiento, seleccione los siguientes objetos. Haga clic en Agregar después de seleccionar cada objeto.

      • Excepciones CLR de .Net
      • Memoria CLR de .Net
      • BizTalk: mensajería
      • BizTalk: TDDS
      • Memoria
      • Proceso
      • Procesador
      • Orquestaciones XLANG/s

      Si SQL Server local, agregue también los siguientes objetos:

      • SQLServer: bases de datos
      • SQLServer: Estadísticas generales
      • SQLServer: Administrador de memoria
    8. Haga clic en Cerrar.

    9. Cambie el valor de Intervalo de muestreo de datos a 5 segundos.

      Nota

      El valor intervalo de muestreo de datos y el tiempo para empezar a supervisar son subjetivos. Estos valores dependen de cuándo se reproduzca la pérdida de memoria. Dado que el archivo de registro puede ser grande, especifique un intervalo en el que pueda obtener la información que debe tener sin agobiar el servidor.

    10. Haga clic en Aceptar. Para detener la recopilación de datos, haga clic con el botón secundario en el nombre del registro de contador y, a continuación, haga clic en Detener.

Obtener el archivo de volcado

Para obtener el archivo de volcado, use uno de los métodos siguientes:

Método 1: Automático

La creación de una regla de pérdida de memoria y control con DebugDiag es el método recomendado para capturar un volcado de memoria. La regla de pérdida de memoria y controlador se adjunta automáticamenteLeaktrack.dll. Esto se usa para realizar un seguimiento de las asignaciones de memoria. Para crear la regla de pérdida de memoria y control, siga estos pasos:

  1. Inicie la Herramienta de diagnóstico de depuración 1.1.

  2. Seleccione Memoria y Controlar pérdida y, a continuación, haga clic en Siguiente.

  3. Seleccione el Btsntsvc.exe y, a continuación, haga clic en Siguiente.

  4. En la página Configurar regla de fuga , siga estos pasos:

    1. Haga clic para activar la casilla Iniciar seguimiento de memoria inmediatamente cuando se active la regla. De lo contrario, puede especificar un tiempo de calentamiento antes de queLeakTrack.dll se inyecte en el BTSNTSvc.exe proceso.

    2. Haga clic en Configurar y, a continuación, haga lo siguiente:

      • Confirme que autocrear una regla de bloqueo está seleccionada. Al seleccionar esta opción, se creará automáticamente un volcado de memoria si el BTSNTSvc.exe se detiene.

      • Haga clic para activar la casilla Generar un usuario cuando lleguen los bytes virtuales y mantenga el valor predeterminado de 1024.

      • Haga clic para activar la casilla y cada casilla adicional y mantener el valor predeterminado de 200. Al seleccionar la opción de alcance de bytes virtuales, se creará automáticamente un volcado de memoria cuando los bytes virtuales usen 1024 MB. Si los bytes virtuales aumentan en 200 MB, se creará automáticamente otro volcado de memoria.

    3. Haga clic en Guardar & Cerrar.

    4. Haga clic en Siguiente.

    5. En la página Seleccionar ubicación de volcado y nombre de regla , haga clic en Siguiente.

      Nota

      También puede cambiar la ruta de acceso del archivo de volcado en el cuadro Ubicación de usuario de esta página.

    6. Haga clic en Finalizar para activar la regla ahora.

      Nota

      El estado de la regla ahora es Seguimiento. Cada vez que se crea un volcado de memoria, el valor aumentará en la columna Recuento de usuarios de la ficha Reglas. La ubicación predeterminada del volcado de memoria es C:\Program Files\DebugDiag\Logs.

Método 2: Manual

También puede adjuntar manualmente Leaktrack.dll y obtener manualmente el archivo de volcado de memoria. Esto permite controlar cuándo se crea el volcado de memoria. Para ello, siga estos pasos:

  1. Inicie la Herramienta de diagnóstico de depuración 1.1.
  2. Haga clic en la pestaña Procesos.
  3. Haga clic con el botón secundario en Btsntsvc.exe y, a continuación, haga clic en Supervisar pérdidas.
  4. En el cuadro de diálogo Herramienta de diagnóstico de depuración, haga clic en Sí y, a continuación, haga clic en Aceptar.

Cree una regla de bloqueo para supervisar el mismo Btsntsvc.exe en caso de que el proceso se detenga antes de poder crear el volcado de memoria:

  1. Inicie la Herramienta de diagnóstico de depuración 1.1.
  2. Seleccione Bloquear y, a continuación, haga clic en Siguiente.
  3. Seleccione un proceso específico y, a continuación, haga clic en Siguiente.
  4. Seleccione el mismo Btsntsvc.exe y, a continuación, haga clic en Siguiente.
  5. En la página Configuración avanzada (opcional ), haga clic en Siguiente.
  6. En el cuadro de diálogo Seleccionar ubicación de volcado y nombre de regla (opcional), haga clic en Siguiente.
  7. Seleccione Activar la regla ahora y, a continuación, haga clic en Finalizar.

Cuando el proceso alcanza entre el 60 y el 80 por ciento de ram, haga clic con el botón secundario en el Btsntsvc.exe y, a continuación, haga clic en Crear usuario completo. Si el proceso de BizTalk se detiene antes de poder crear el volcado de usuario, la regla de bloqueo debe tener efecto y crear el volcado de memoria.

Detener el registro del Monitor de rendimiento

Si va a capturar un volcado de memoria y datos del Monitor de rendimiento, detenga el registro del Monitor de rendimiento unos dos minutos después de crear el volcado de memoria.

Analizar el archivo de volcado

Para ayudar a determinar la causa de una pérdida de memoria, puede usar la herramienta Depurar diagnósticos para analizar el archivo de volcado. Para ello, siga estos pasos:

  1. Haga clic en la pestaña Análisis avanzado.
  2. Haga clic en Agregar archivos de datos y, a continuación, busque el archivo .dmp.
  3. Seleccione el script Análisis de presión de memoria y, a continuación, haga clic en Iniciar análisis.

De forma predeterminada, se creará un archivo de informe de análisis (el archivo .mht) C:\Program Files\DebugDiag\Reports en la carpeta cuando finalice el análisis. El archivo de informe también se mostrará en el explorador. El archivo de informe contiene los resultados del análisis. Además, el archivo de informe puede contener recomendaciones sobre cómo resolver la pérdida de memoria.

Si usa DLL personalizadas, puede agregar la ruta de acceso de símbolos de los archivos .pdb personalizados para el análisis. Para ello, siga estos pasos:

  1. Abra la herramienta Depurar diagnóstico.
  2. En el menú Herramientas, haga clic en Opciones y Configuración.
  3. En el cuadro Ruta de acceso de búsqueda de símbolos para depuración , escriba la ruta de acceso del símbolo.

Si desea ayuda para analizar el archivo de volcado, póngase en contacto con los Servicios de soporte al cliente de Microsoft. Para obtener una lista completa de los números de teléfono del Servicio de soporte al cliente e información sobre los costos de soporte técnico, visite el Soporte técnico de contacto.

Antes de ponerse en contacto con los Servicios de soporte al cliente, comprima el archivo de volcado, el registro del Monitor de rendimiento, el archivo de informe de análisis y los registros de eventos actualizados (archivos .evt). Es posible que tenga que enviar estos archivos a un BizTalk Server de soporte técnico.