ID do artigo: 918643 - Última revisão: segunda-feira, 28 de fevereiro de 2011 - Revisão: 1.0

Como solucionar problemas de vazamento de memória ou uma exceção de falta de memória no processo do BizTalk Server

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Vazamentos de memória são um problema comum. Talvez você precise tente várias etapas para encontrar a causa específica de um vazamento de memória ou uma exceção de falta de memória (OOM) no Microsoft BizTalk Server. Este artigo discute as considerações importantes ao avaliar o uso de memória e possíveis problemas relacionados à memória. Essas considerações incluem o seguinte:
  • RAM física
  • Processamento de mensagens grandes
  • Usar o/3GBswitch
  • Uso de componentes personalizados
  • Qual versão do Microsoft.NET Framework o sistema está em execução
  • O número de processadores

INTRODUÇÃO

Este artigo descreve como solucionar problemas de vazamento de memória ou uma exceção de falta de memória no processo do BizTalk Server do Microsoft BizTalk Servidor.

Mais Informações

O processo do BizTalk Server pode estar enfrentando um vazamento de memória Quando o uso de memória no Gerenciador de tarefas do Microsoft Windows consome mais de 50 Porcentagem de RAM física. Um vazamento de memória pode causar uma exceção de falta de memória Quando o uso da memória aumenta até que o processo é executado fora da memória do sistema ou até que o processo pára de funcionar.

Quando esse problema ocorre, uma mensagem de aviso semelhante a seguinte mensagem é registrada no log de eventos:

Evento Tipo: aviso
Categoria do evento: (1)
Identificação do evento: 5410
Descrição: Ocorreu um erro que requer o serviço do BizTalk para encerrar. As causas mais comuns são inesperado do erro de memória e incapacidade de conexão ou uma perda de conectividade com um dos bancos de dados do BizTalk. O serviço será desligamento e reinicialização automática em 1 minuto. Se o banco de dados problemático permanece indisponível, esse ciclo se repetirá.
Mensagem de erro: exceção do tipo System. OutOfMemoryException foi lançada.
Origem do erro:
Host do BizTalk nome: BizTalkServerApplication
Nome do serviço do Windows: BTSSvc {DCC899FE-C62F-41BE-851A-8720B2EB9C14}

Tipo de evento: aviso
Categoria do evento: (1)
Identificação do evento: 5410
Descrição: Ocorreu um erro que requer o serviço do BizTalk para encerrar. As causas mais comuns são os seguintes: 1) um inesperado Erro de falta de memória. OU 2) não conseguem se conectar ou uma perda de conectividade com um dos bancos de dados do BizTalk. O serviço será desligamento e reinicialização automática em 1 minuto. Se o banco de dados problemático permanece indisponível, esse ciclo se repetirá.
Mensagem de erro: exceção do tipo 'System. OutOfMemoryException' foi lançada.
Origem do erro: mscorlib
Nome de host do BizTalk: BizTalkServerApplication
O nome de serviço do Windows: BTSSvc$ BizTalkServerApplication

Considerações importantes

Uso da memória RAM e memória física

Porque ele pode ter um comportamento esperado para um processo de cerca de metade a RAM física, use o uso da memória como uma diretriz. Por exemplo, se o BizTalk Server possui 4 gigabytes (GB) de RAM e o processo do BizTalk Server usa cerca de 500 megabytes (MB) de RAM, pode não haver vazamento. Se o processo do BizTalk Server usa cerca de 1 GB de RAM, pode haver um vazamento de memória ou uma situação de memória alta. O consumo de memória pode ser causado por um procedimento armazenado longa ou uma orquestração. Certifique-se de que você sabe quanta memória o host do BizTalk normalmente usa para determinar se um vazamento de memória ou a condição de memória alta está ocorrendo.

Mensagens grandes

Quando o BizTalk Server processa mensagens grandes, o sistema parece ter um vazamento de memória. No entanto, as mensagens podem estar usando uma grande quantidade de memória. Para obter mais informações sobre as mensagens grandes, visite os seguintes sites da Microsoft Developer Network (MSDN):
http://blogs.msdn.com/biztalk_core_engine/archive/2005/02/28/381700.aspx (http://blogs.msdn.com/biztalk_core_engine/archive/2005/02/28/381700.aspx)

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

Além disso, considere o uso de memória alta pode ser esperado se BizTalk O servidor está processando mensagens grandes. Talvez você queira atualizar o hardware para atende os requisitos de desempenho do BizTalk Server em seu ambiente.

Quanto tempo demora para reproduzir o vazamento de memória

Vazamentos de memória podem ocorrer imediatamente ou eles podem se acumular em tempo. Ambos os cenários são comuns.

Uso da opção /3GB em computadores de 32 bits

Normalmente, um processo pode acessar 2 GB de espaço de endereço virtual. O/3GBswitch é uma opção para sistemas que requerem mais memória endereçável. Esta opção pode aumentar o uso da memória para o processamento de mensagens. No entanto, o/3GBswitch permite que apenas 1 GB de memória endereçável para operações no modo kernel. Além disso, essa opção pode aumentar o risco de ficar sem memória de pool.

Para obter mais informações sobre o/3GBAlternar, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms791558.aspx (http://msdn.microsoft.com/en-us/library/ms791558.aspx)
Quando o/3GBswitch é habilitada em uma versão de 32 bits do Windows, o processo poderá acessar 3 GB de endereço virtual Se o processo for grande-endereço de espaço ciente. Um processo é o endereço grande reconhecimento quando o executável tem o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE definido no cabeçalho da imagem. Como o processo do BizTalk é endereço grande ciente, BizTalk será beneficiada com a opção /3GB.

Se estiver executando uma instância de host do BizTalk de 32 bits em uma versão de 64 bits do Windows (AMD64), os benefícios do processo de BizTalk da memória de 4 GB de espaço de endereço como o BizTalk é endereço grande ciente. Portanto, mover os aplicativos de memória alta para um servidor de 64 bits pode ser a melhor solução.

Um processo do BizTalk de 64 bits em uma versão de 64 bits do Windows (AMD64) tem 8 TB de memória endereçável.

Você também deve considerar os bytes virtuais e os bytes particulares usados pelo processo. Uma instância de host do BizTalk (que é um.NET Framework aplicativo) pode receber um erro de falta de memória antes do valor de Bytes virtuais atinge 2 GB. Isso pode ocorrer mesmo que o máximo de memória endereçável por um processo em uma versão de 32 bits do Windows (sem o/3GBswitch) é de 2 GB. Para obter uma explicação de por que isso pode ocorrer, visite os seguintes sites da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/ms972959.aspx (http://msdn.microsoft.com/en-us/library/ms972959.aspx)
http://blogs.msdn.com/TESS/archive/2005/11/25/496898.aspx (http://blogs.msdn.com/tess/archive/2005/11/25/496898.aspx)
O/3GBswitch também aumenta o máximo de bytes particular do processo de 800 MB BizTalk 1800 MB. Para obter mais informações sobre.NET Framework o desempenho de aplicativos com o/3GBopção ativada, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms998583.aspx (http://msdn2.microsoft.com/en-us/library/ms998583.aspx)
A tabela a seguir resume essas informações e inclui os limites práticos para bytes virtuais e particular.
Recolher esta tabelaExpandir esta tabela
ProcessoWindowsMemória endereçável (com um processo de reconhecimento de endereço grande)Limite prático de bytes virtuaisLimite prático de bytes particulares
32 bits32 bits2 GB1400 MB800 MB
32 bits32 bits com 3 GB3 GB2400 MB1800 MB
32 bits64 bits4 GBMB 3400MB 2800
64 bits64 bits8 TBNão aplicávelNão aplicável
Para obter mais informações sobre a memória endereçável de 32 bits versus 64-bit Windows, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/aa366778.aspx (http://msdn.microsoft.com/en-us/library/aa366778.aspx)
A tabela a seguir lista PAE e 3 GB de capacidade para versões diferentes do BizTalk Server.
Recolher esta tabelaExpandir esta tabela
ProdutoPAE3 GB
O BizTalk Server 2004.SimNão
O BizTalk Server 2006SimSim
O BizTalk Server 2006 R2SimSim
O BizTalk Server 2009SimSim
Se você deve habilitar o/3GBAlternar para atender às necessidades de desempenho de um computador que esteja com o BizTalk Server, você talvez queira considerar a inclusão de servidores para o grupo do BizTalk. Isso permite que você dimensione as instâncias host intensivo de memória.

Componentes do BizTalk que são executados dentro de um processo do Internet Information Services (IIS) pode também se beneficiam quando o/3GBswitch está ativado.

O/3GBswitch não é suportado em computadores que estejam executando o Windows SharePoint Services 2. 0 ou posterior ou o SharePoint Portal Server 2003 SP2 ou versões posteriores.Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
933560  (http://support.microsoft.com/kb/933560/ ) A opção /3GB do Windows Server 2003 não é suportada no Windows SharePoint Services 2. 0 ou nas versões mais recentes ou no SharePoint Portal Server 2003 Service Pack 2 ou em versões posteriores

Uso de componentes personalizados

Se você usar componentes personalizados, como componentes de serviço, ou de tubulações Você deve saber o que fazem esses componentes. Você também deve saber o possível efeito desses componentes em uso de memória. A problema de memória comum ocorre quando um componente está transformando um documento. O operação de transformação é uma operação de usar muita memória. Quando um documento é o BizTalk Server transformados, passa o fluxo de mensagens para o Microsoft.NET FrameworkXslTransformclasse dentro do processo do BizTalk.

Outro problema comum ocorre quando há manipulação intensiva de seqüência de caracteres. Seqüência de caracteres intensivo manipulação pode consumir muita memória. Para obter mais informações sobre as maneiras melhorar o desempenho, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms998547 (http://msdn2.microsoft.com/en-us/library/ms998547)

Versão do.NET Framework

A Microsoft.NET Framework 2. 0 e o.NET Framework 1. 1 tem um comportamento diferente de memória. Portanto, você poderá ver resultados variados entre eles. Se você estiver usando o.NET Framework, confirme que a última.NET Framework Service Pack 1 está instalado. Esses service packs corrigem diversos problemas de memória conhecidos. Para obter mais informações, clique nos números abaixo:

945757 (http://support.microsoft.com/default.aspx?scid=kb;EN-US;945757) Problemas corrigidos na.NET Framework 2. 0 Service Pack 1
867460  (http://support.microsoft.com/kb/867460/ ) Lista de bugs corrigidos na.NET Framework 1. 1 Service Pack 1

Número de processadores

O common language runtime (CLR) tem o seguinte lixo Coletores (GCs):
  • Estação de trabalho (mscorwks. dll)
  • Servidor (Mscorsvr.dll)
Se o computador que está executando o BizTalk Server é um sistema multiprocessador, o.NET Framework usa a versão do servidor do mecanismo de execução. Este é o comportamento padrão. O coletor de lixo do servidor destina-se a taxa de transferência máxima. Além disso, o coletor de lixo do servidor pode ser dimensionado para oferecer um desempenho muito alto. Este coletor de lixo aloca memória e, em seguida, mais tarde libera memória para oferecer alto desempenho no sistema. Portanto, um computador que esteja executando o BizTalk Server junto com alguns.NET Framework components parece ter um vazamento de memória. No entanto, nesse cenário, o uso de memória alta é o comportamento esperado. Se o computador ficar sem memória do sistema, ou se o processo pára de funcionar por causa de insuficiência de memória endereçável, pode existir uma condição de vazamento de memória.

Se o computador. Isto é com o BizTalk Server é um sistema de processador único, o.NET Framework usa a versão de estação de trabalho do mecanismo de execução. Este é o padrão. comportamento. O algoritmo de alocação de coletor de lixo da estação de trabalho não for projetado para escalar ou para throughput máximo. Usa este coletor de lixo métodos de coletor de lixo simultâneas. Esses métodos são projetados para aplicativos que têm interfaces de usuário complexa. Tais aplicativos podem exigir. coleta de lixo mais agressiva.

ImportanteNesta seção, método ou tarefa contém etapas que informam sobre como modificar o registro. No entanto, sérios problemas poderão ocorrer se você modificar o registro incorretamente. Portanto, certifique-se de que você siga estas etapas cuidadosamente. Para maior proteção, faça backup do registro antes de modificá-lo. Em seguida, você poderá restaurar o registro se ocorrer um problema. Para obter mais informações sobre como fazer backup e restaurar o registro, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Como fazer backup e restaurar o registro no Windows
Às vezes, pode ser apropriado executar a versão de estação de trabalho do mecanismo de execução em um sistema com vários processadores. Você pode usar a seguinte chave do registro para alternar para a versão de estação de trabalho do mecanismo de execução.

O BizTalk 2006 e versões posteriores

Crie a seguinte chave do registro de seqüência de caracteres de hospedagem do CRL com os valores correspondentes:

$ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvcBizTalkHostNameHospedagem de \CLR

Nome: Flavor
Dados: wks

O BizTalk 2004

Crie a seguinte chave do registro de seqüência de caracteres de hospedagem do CRL com os valores correspondentes:

{HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvcGUID} Host \CLR

Nome: Flavor
Dados: wks

Para obter mais informações, visite os seguintes sites da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/ms973838 (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 (http://blogs.msdn.com/tess/archive/2008/04/17/how-does-the-gc-work-and-what-are-the-sizes-of-the-different-generations.aspx)

Causas comuns e resoluções

Uso de memória de processo e limites de otimização do uso de memória física

OUso de memória de processoeUso de memória físicalimites de otimização pode ser alterada no BizTalk Server 2006 e em versões posteriores.
  • Por padrão, oUso de memória de processolimite de regulagem é definido como 25. Se esse valor for excedido e o uso de memória de processo do BizTalk é a mais de 300 MB, pode ocorrer uma condição de regulagem. Em um servidor de 32 bits, você pode aumentar o valor de uso de memória do processo para 50. Em um servidor de 64 bits, você pode aumentar esse valor para 100. Isso permite mais o consumo de memória pelo processo do BizTalk antes que ocorra a otimização.
  • OUso de memória físicalimite de regulagem tem um valor padrão de 0. Esse limite mede a memória total do sistema. Portanto, se um valor diferente de 0 está configurado, uma condição de regulagem pode ocorrer se um processo do BizTalk não está usando memória alta.
Para obter mais informações sobre os limites de regulagem, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/aa559628.aspx (http://msdn.microsoft.com/en-us/library/aa559628.aspx)

Dehydration otimização limites

Os limites de dehydration de memória padrão podem causar muito dehydration quando orquestrações são executadas em um host de 64 bits. Para obter mais informações sobre esse problema, consulte oPropriedades padrão de dehydrationtópico no seguinte site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/aa560586.aspx (http://msdn.microsoft.com/en-us/library/aa560586.aspx)
Observaçãohosts de 64 bits são suportados no BizTalk Server 2006 e versões posteriores.

Em um hardware equivalente em uma instância de host de 32 bits, dehydration observado é nominal quando as mesmas orquestrações são executadas usando o dehydration de memória padrão limites de otimização.

Como a arquitetura de 64 bits fornece espaço de endereço de memória expandida (16 TB em vez de 4 GB), instâncias de host de 64 bits são alocadas significativamente mais memória do que instâncias host de 32 bits. Isso pode causar os limites de otimização de memória padrão seja excedido.

Para contornar esse comportamento, altere os valores de VirtualMemoryThrottlingCriteria e PrivateMemoryThrottlingCriteria no arquivo BTSNTSvc64.exe.config. Use os Bytes de Process\Virtual e os contadores do Monitor de desempenho de Bytes de Process\Private para determinar a maior quantidade de memória alocada por uma instância de orquestração.
  • Defina o valor de OptimalUsage para ambas as propriedades com base nos seguintes itens:
    VirtualMemoryThrottlingCriteria: valor de Bytes de \Process\Virtual + 10 %
    PrivateMemoryThrottlingCriteria: valor de Bytes de \Process\Private + 10 %
  • Definir MaximalUsage para ambas as propriedades para o valor de OptimalUsage + 30 %
Por exemplo, se o valor do contador de Bytes Monitor de desempenho para uma instância de coordenação de \Process\Virtual 5,784,787,695 bytes (5,517 MB), defina o valor de OptimalUsage para VirtualMemoryThrottlingCriteria 6,069 MB (5,784,787,695 * 1,10 = 6,363,266,464.5 bytes). Defina o valor de MaximalUsage para VirtualMemoryThrottlingCriteria 7,889 MB (6,363,266,464.5 * 1,30 = 8,272,246,403.85 bytes).

Se o valor do contador de desempenho do sistema Bytes de \Process\Private 435689400 bytes (415 MB), defina o valor de OptimalUsage para PrivateMemoryThrottlingCriteria para 457 MB (435689400 * 1,10 = 479258340 bytes). Defina o valor de MaximalUsage para PrivateMemoryThrottlingCriteria a 594 MB (479258340 * 1,30 = 623035842).

Neste exemplo, os seguintes valores seriam especificados no arquivo BTSNTSvc64.exe.config para reduzir a aceleração.
Recolher esta tabelaExpandir esta tabela
Contador do Monitor de desempenhoMemória alocadaOptimalUsageMaximalUsage
\Process\Virtual bytes5784787695 bytes (5517 MB)60697889
\Process\Private bytes435689400 bytes (415 MB)457594
Esses valores, em seguida, poderia ser representados no arquivo BTSNTSvc64.exe.config da seguinte maneira:
<xlangs>
      <Configuration>
                  <Dehydration>
                              <VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
                              <PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
                  </Dehydration>
      </Configuration>
</xlangs>
Para determinar qual instância de host está executando a orquestração, você pode adequar o processo de identificação do processo de \BizTalk:Messaging\ID e \Process\ID os contadores do Monitor de desempenho do processo. Em seguida, verifique o valor médio exibido para os contadores de Monitor de desempenho de Bytes de \Process\Private e correspondente \Process\Virtual Bytes.

ObservaçãoA alta dehydration pode causar uma redução significativa no desempenho quando o banco de dados do BizTalkMsgBoxDb está em execução no SQL Server 2008.

O BizTalk Server Service Packs e atualizações cumulativas

O BizTalk Server service packs e atualizações cumulativas incluem as correções mais recentes. Eles incluem aqueles que afetam os problemas conhecidos de System. OutOfMemoryException.

2281783 (http://support.microsoft.com/default.aspx?scid=kb;en-US;2281783) Lista de Service Pack e a atualização cumulativa para o BizTalk Server 2006 R2

Microsoft BizTalk Server 2004 Service Pack 2 (http://www.microsoft.com/downloads/en/details.aspx?FamilyId=D20B4510-E5A6-4D7B-87A1-4BD52BDD57B8&displaylang=en)

HeapDeCommitFreeBlockThreshold

Por padrão, o valor da chave do registro theHeapDeCommitFreeBlockThreshold é 0. Um valor 0 significa que o heap. Gerenciador de decommits cada página (KB) de 4 kilobytes que fica disponível. Liberação operações causam a fragmentação de memória virtual. O tamanho dasHeapDeCommitFreeBlockThresholdconfiguração no Gerenciador de heap dependerá do tipo de trabalho que o sistema está fazendo. Um tamanho de 0x00040000 é de partida recomendados valor.

Considere as seguintes informações antes de alterar o valor. da
HeapDeCommitFreeBlockThreshold
Registro chave:
  • Essa alteração se aplica somente a fragmentação da memória problemas.
  • Essa alteração é todo o sistema. Portanto, a maioria dos processos serão Use mais memória na inicialização.
  • Somente considera essa alteração para sistemas que têm o BizTalk Servidor como sua principal missão.
Para ajudar a reduzir a fragmentação da memória virtual, você pode aumentar o tamanho dasHeapDeCommitFreeBlockThresholdConfigurando no Gerenciador de heap, alterando o valor da seguinte chave do registro:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Gerenciador


Nome do valor: HeapDeCommitFreeBlockThreshold
Tipo de valor: REG_DWORD
Dados do valor: 0x00040000 (Este é o valor de partida recomendado).
Valor padrão: ausente
Para obter mais informações sobre a chave de registro HeapDeCommitFreeBlockThreshold, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
315407  (http://support.microsoft.com/kb/315407/ ) A chave de registro "heapdecommitfreeblockthreshold"

Transformar as operações

Quando o BizTalk Server executa operações de transformação XML em relativamente grande de mensagens em uma porta de recepção, em uma porta de envio, ou em XLANG, transformações XSL carregar toda a mensagem na memória..

Para resolver esse problema, use um dos seguintes métodos:
  • Diminuir o número de mensagens que o BizTalk Server processos ao mesmo tempo.
  • Reduzir o tamanho da mensagem XML que está sendo transformado.
OSystem.Policy.Security.Evidenceobjeto é freqüentemente usado em transformações e pode consumir a quantidade de memória. Quando um mapa contém uma functoid de script que usa inline TRANSLATION FROM VPE FOR CSHARP (ou qualquer outra linguagem embutida), o assembly é criado na memória. OSystem.Policy.Security.Evidenceobjeto usa o objeto do conjunto chamador real. Essa situação cria um objeto com raiz que não é excluído quando o serviço do BizTalk é reiniciado.

A maioria dos functoids do BizTalk padrão é implementada como script embutido. Esses itens podem causar System. Byte [] objetos coletar na memória. Para minimizar o consumo de memória, é recomendável que você coloque qualquer mapa que usa esses functoids em um assembly pequeno. Em seguida, fazer referência a esse assembly. Use o gráfico a seguir para determinar quais functoids usar script embutido e quais functoids não use script embutido.

Na segunda coluna, "Sim" significa que este functoid é implementada como um script embutido e que ele fará com que o System. Byte [] objetos coletar na memória. "Não" significa que este functoid não é implementada como script embutido, e que ele fará com que objetos do System. Byte [] coletar na memória.
Recolher esta tabelaExpandir esta tabela
FunctoidsScript embutido?
Todos os Functoids de seqüência de caracteresSim
Todos os Functoids matemáticosSim
Todos os Functoids lógicos, exceto IsNilSim
Lógica Functoid de IsNilNão
Todos os Functoids de data/hora.Sim
Todos os Functoids de conversãoSim
Todos os Functoids científicosSim
Todos os Functoids cumulativosSim
Todos os Functoids de banco de dadosNão
Functoids avançadaScript embutido?
Loop FunctoidNão
Mapeamento de valor de achatamento FunctoidNão
Declarar FunctoidNão
Tabela extrator FunctoidNão
Tabela de repetição FunctoidNão
Functoid de script com Inline TRANSLATION FROM VPE FOR CSHARPSim
Functoid de script com JScript.NET embutidoSim
Functoid de script com embutido do Visual Basic.NETSim
Functoid de script com XSLT embutidoNão
Functoid de script com XSLT embutido chamada modeloNão
Chamando Assembly externo Functoid de scriptNão
Nil Functoid de valorNão
Functoid de mapeamento de valorNão
Functoid de cópia em massaNão
Functoid de iteraçãoNão
Índice FunctoidNão
Contagem de registros FunctoidNão
O BizTalk Server 2006 e versões posteriores melhoram significativamente o gerenciamento de memória para documentos grandes. Para fazer isso, o BizTalk Server implementa uma mensagem configurável limite de tamanho para carregar documentos na memória durante as operações de transformação. O limite de tamanho de mensagem padrão é 1 MB. Para obter mais informações sobre a configuração de TransformThreshold, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa560481.aspx (http://msdn2.microsoft.com/en-us/library/aa560481.aspx)

Valores de atributo grandes e elemento grande

Quando o BizTalk Server executa um recebimento pipeline ou um pipeline de envio em um documento XML, a carga é processada no Se o documento contém um ou mais dos seguintes entidades de memória:
  • Valores de atributo grande
  • Elemento grandes valores
  • Grandes marcas de elemento ou atributo
Para resolver esse problema, limite o tamanho dessas entidades. Se este método não é possível, certifique-se de que sua instância de HOST do BizTalk processo múltiplo documentos como essas, ao mesmo tempo.

Componentes de pipeline personalizados

Você está usando um componente de pipeline personalizado que carrega o todo fluxo na memória. Todos os componentes que estão incluídos com o BizTalk Server com exceção de transformações, suporte a streaming. Esses componentes não usam o máximo memória durante o fluxo contínuo. No entanto, os componentes de pipeline personalizados podem não suportar fluxo contínuo.

Fluxo sob carga excessiva

Envie hosts fiquem sem memória quando eles operam sob carga excessiva. BizTalk Server envie pipelines e enviar o streaming de suporte de adaptadores. Em cada componente de fluxo contínuo, carrega um pequeno fragmento do fluxo na memória. Porque cada mensagem inclui outras estruturas de dados, com uma mensagem o contexto que pode ser grandes ou pequenos, esse comportamento afeta o comportamento do BizTalk Servidor sob carga excessiva.

O comportamento do BizTalk Server é afetado. porque o mecanismo carrega um número pré-configurado de mensagens. O número de mensagens que carrega o mecanismo é baseada nos valores que aparecem na Campos LowWaterMark e HighWaterMark da tabela Adm_serviceClass. A tabela Adm_serviceClass está no banco de dados de gerenciamento do BizTalk. Esses valores. controlar o número de mensagens do BizTalk Server processa ou envia à mesmo tempo.

OHighWaterMarko valor é o número total de mensagens que o mecanismo processa ao mesmo tempo. O valor padrão é 200 mensagens por CPU. Portanto, em um servidor com oito processadores, o host de envio tentará processar mensagens de 1600 (200 * 8) em o mesmo tempo. Se você assumir que cada mensagem é de 50 KB, as mensagens igual a 80 MB (1, 50 * 600 = 80, 000 KB).

Para resolver esse problema, você pode alterar oHighWaterMarkvalor e oLowWaterMarkvalor no banco de dados. Os valores que você usa dependem do tamanho as mensagens.

Para obter mais informações sobre causas comuns de um falta de memória da condição, consulte a seção "Memória crescimento no BizTalk Messaging" no seguinte site da Microsoft:
http://blogs.msdn.com/biztalkperformance (http://blogs.msdn.com/biztalkperformance)
O BizTalk Server 2006 e versões posteriores, você pode alterar o host padrão configurações de otimização. Para obter mais informações sobre como alterar o host padrão configurações de otimização, visite o seguinte site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa559628.aspx (http://msdn2.microsoft.com/en-us/library/aa559628.aspx)

Simplificar o problema.

Se você identificar um vazamento de memória, tente determinar a causa removendo componentes personalizados ou simplificando um mapa. Além disso, tente reproduzir o problema por meio de uma orquestração simple ou uma solução simples. Normalmente, você deve criar separado receber hosts para receberem os adaptadores. Você deve também Crie hosts de envio separado para adaptadores de envio. Quando você usa esse método, cada adaptador pode executar em um processo separado. Portanto, se o processo do BizTalk Server passa por uma condição de falta de memória, você irá sabe quais componentes estão envolvidos.

As etapas de solução de problemas

Para solucionar uma condição de falta de memória, use a depuração Ferramenta de diagnóstico para monitorar as alocações de memória ao longo do tempo. O diagnóstico de depuração ferramenta pode criar e analisar um arquivo de despejo de vazamento de memória (. dmp). Quando você solucionar problemas de vazamento de memória, o objetivo é anexar Leaktrack.dll antes do alto Reproduz a condição de memória para capturar o aumento da memória ao longo do tempo. LeakTrack.dll é fornecido com a ferramenta Debug Diagnostic.
  1. Instale a ferramenta Debug Diagnostic.

    O seguinte arquivo está disponível para download no Centro de Download da Microsoft:

    Recolher esta imagemExpandir esta imagem
    Download
    Baixe o pacote de ferramenta Debug Diagnostic agora. (http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3)

    Para obter mais informações sobre como baixar arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    119591  (http://support.microsoft.com/kb/119591/ ) Como obter arquivos de suporte da Microsoft de serviços on-line
    Microsoft examinou esse arquivo em busca de vírus. A Microsoft usou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.
  2. Use o Monitor de desempenho para coletar dados sobre o sistema desempenho. Esses dados podem fornecer indicadores importantes sobre a eficiência da o ambiente do BizTalk Server. O objetivo é capturar o desempenho do processo ao longo do tempo. Portanto, habilitar o log de desempenho do sistema antes do vazamento de memória ocorre.

Como usar o registo do Monitor de desempenho

Selecione os dados para fazer logon
Para selecionar os dados para fazer logon, use o método apropriado para seu sistema operacional:
  • Para Windows Server 2008 e Windows Server 2008 R2
    1. Em Ferramentas administrativas, abraMonitor de confiabilidade e desempenho.
    2. Com o botão direitoMonitor de desempenho, clique emNovoe, em seguida, clique emConjunto de Coletores de dados.
    3. NoNomecaixa, digite um nome descritivo e, em seguida, clique emAvançar.
    4. Observe o diretório raiz e, em seguida, clique emAvançar.
    5. Clique emIniciar este conjunto agora de Coletores de dadose, em seguida, clique emConcluir.
    6. ExpandaConjuntos de Coletores de dados, expandaDefinido pelo usuárioe, em seguida, selecione o arquivo.
    7. Com o botão direitoLog do Monitor de sistemae, em seguida, clique emPropriedades.
    8. Clique emAdicionarsobre oContadores de desempenhoguia e selecione os objetos a seguir e clique emAdicionarDepois de selecionar cada objeto:
      • .NET exceções do CLR
      • .NET memória do CLR
      • O BizTalk: mensagens
      • BizTalk:TDDS
      • Memória
      • Processo
      • Processador
      • Orquestrações XLANG/s
      Se o SQL Server for local, adicione também os seguintes objetos:
      • SQLServer: Databases
      • Estatísticas de SQLServer:General
      • SQLServer: Gerenciador
    9. Clique emOK.
    10. Alterar oValor do intervalo de exemplocaixa para5 segundos.

      ObservaçãoO valor do intervalo de amostragem e a hora de começar a monitorar são subjetivas. Esses valores dependem quando o vazamento de memória é reproduzido. Como o arquivo de log pode ser grande, especifique um intervalo no qual você pode obter as informações que você deve ter sem sobrecarregar o servidor.
    11. Clique emOK.
    Para interromper a coleta de dados, clique emPararsobre oAçãomenu.
  • Para Windows Server 2003 ou Windows XP
    1. ExpandaLogs de desempenho e Alertas.
    2. Com o botão direitoLogs do contadore, em seguida Clique emNovas configurações de Log. ONovas configurações de Logcaixa de diálogo é exibida.
    3. NoNomeDigite um descritivo nome e clique emOK.
    4. Observe o local do arquivo de log. (Você também pode clicar aArquivos de logguia e cliqueConfigurarpara alterar o local do arquivo de log).
    5. Clique emAdicionar contadores.
    6. SelecioneTodos os contadoreseTodos os instâncias.
    7. NoObjeto de desempenholista, selecione os seguintes objetos. Clique emAdicionarDepois de selecionar cada objeto.
      • .NET exceções do CLR
      • .NET memória do CLR
      • O BizTalk: mensagens
      • BizTalk:TDDS
      • Memória
      • Processo
      • Processador
      • Orquestrações XLANG/s
      Se o SQL Server for local, adicione também os seguintes objetos:
      • SQLServer: Databases
      • Estatísticas de SQLServer:General
      • SQLServer: Gerenciador
    8. Clique emFechar.
    9. Alterar o valorAmostragem de dados Intervalopara 5 segundos.

      ObservaçãoO valor do intervalo de amostragem de dados e a hora de começar a monitorar são subjetivas. Esses valores dependem quando o vazamento de memória é reproduzido. Como o arquivo de log pode ser grande, especifique um intervalo no qual você pode obter as informações que você deve ter sem sobrecarregar o servidor.
    10. Clique emOK.
    Para interromper a coleta de dados, clique com o botão direito no nome do log de contador e, em seguida, clique emParar.
Obtenha o arquivo de despejo
Para obter o arquivo de despejo, use um dos seguintes métodos:
  • Método 1: automático
    Criar uma regra de memória e o vazamento com DebugDiag é a abordagem recomendada para capturar um despejo de memória. A regra de memória e vazamento anexa automaticamente o Leaktrack.dll. Isso é usado para rastrear as alocações de memória. Para criar a regra de memória e o vazamento, siga estas etapas:
    1. Iniciar a depuração Ferramenta de diagnóstico 1. 1.
    2. SelecioneMemória e vazamento de identificador, e em seguida, clique emAvançar.
    3. Selecione oBtsntsvc.exeprocessar e, em seguida, clique emAvançar.
    4. Na página Configurar regras de vazamento, execute estas etapas:
      1. Clique para selecionar oIniciar rastreamento imediatamente quando a regra é ativada de memóriacaixa de seleção. Caso contrário, você pode especificar um tempo de aquecimento antes de LeakTrack.dll é injetado no processo de BTSNTSvc.exe.
      2. Clique emConfigurar, e, em seguida, faça o seguinte:
        • Confirme queCriar uma regra crash automaticamenteestá selecionada. Ao selecionar esta opção, um despejo de memória será criado automaticamente se parar o processo de BTSNTSvc.exe.
        • Clique para selecionar oGerar um userdump quando atingem bytes virtuaiscaixa de seleção e manter o valor padrão de1024.
        • Clique para selecionar oe cada adicionaiscaixa de seleção e mantenha o padrão de 200.
        Selecionando os bytes virtuais alcance opção, um despejo de memória será criado automaticamente quando bytes virtuais usa 1024 MB. Se bytes virtuais aumenta, 200 MB, outro despejo de memória será criado automaticamente.
      3. Clique emSalvar & fechar.
      4. Clique emAvançar.
    5. Na página Selecione despejo local e nome da regra, clique em.Avançar.

      ObservaçãoVocê também pode alterar o caminho do arquivo de despejo naLocal de Userdumpcaixa nesta página.
    6. Clique emConcluirPara ativar a regra agora.
    ObservaçãoO status da regra agora está controlando. Sempre que um despejo de memória é criado, o valor aumentará na coluna contagem de Userdump na guia regras. O local de despejo de memória padrão é c:\Arquivos de Files\DebugDiag\Logs.
  • Método 2: Manual
    Você pode anexar manualmente Leaktrack.dll e obter manualmente o arquivo de despejo de memória. Isso permite que você controle quando o despejo de memória é criado. Para fazer isso, execute estas etapas:
    1. Iniciar a depuração Ferramenta de diagnóstico 1. 1.
    2. Clique naProcessosguia.
    3. Com o botão direito doBtsntsvc.exeprocessar e, em seguida, clique emMonitor de vazamentos.
    4. NoFerramenta Debug Diagnosticcaixa de diálogo Clique emSime, em seguida, clique emOK.
    Crie uma regra de travamento para monitorar o mesmo processo de Btsntsvc.exe, caso o processo pára antes de criar o despejo de memória.
    1. Iniciar a ferramenta de diagnóstico 1. 1 de depuração.
    2. SelecioneTravamentoe, em seguida, clique emAvançar.
    3. SelecioneUm processo específicoe, em seguida, clique emAvançar.
    4. Selecione o mesmo processo de Btsntsvc.exe e, em seguida, clique emAvançar.
    5. Sobre oConfiguração avançada (opcional)página, clique emAvançar.
    6. NoSelecione o local de despejo e o nome da regra (opcional)caixa de diálogo, clique emAvançar.
    7. SelecioneAtivar a regra agorae, em seguida, clique em Concluir.
    Quando o processo atinge 60 a 80% de RAM, o processo de Btsntsvc.exe com o botão direito e, em seguida, clique emCriar Full Userdump. Se o processo do BizTalk pára antes de criar o despejo do usuário, a regra de travamento deve entrem em vigor e crie o despejo de memória.
Parar o log do Monitor de desempenho
Se você estiver capturando um despejo de memória e dados de desempenho do sistema, pare o Monitor de desempenho log cerca de dois minutos após o despejo de memória é criado.
Analisar o arquivo de despejo
Para ajudar a determinar a causa de um vazamento de memória, você pode usar a depuração Ferramenta de diagnóstico para analisar o arquivo de despejo. Para fazer isso, execute estas etapas:
  1. Clique naAnálise avançadaguia.
  2. Clique emAdicionar arquivos de dadose localize o arquivo. dmp.
  3. Selecione oAnálise de pressão de memóriascript e clique emIniciar a análise.
Por padrão, um arquivo de relatório de análise (. mht) será criado na pasta c:\Arquivos de Files\DebugDiag\Reports quando a análise estiver concluída. O arquivo de relatório também será exibido no navegador. O arquivo de relatório contém os resultados da análise. Além disso, o arquivo de relatório pode conter recomendações sobre como resolver o vazamento de memória.

Se você usar o custom DLLs, você pode adicionar o caminho de símbolo dos arquivos. pdb personalizados para análise. Para fazer Isso, execute estas etapas:
  1. Abra a ferramenta Debug Diagnostic.
  2. Sobre oFerramentasmenu, clique emOpções e configurações.
  3. NoCaminho de pesquisa para depuraçãoDigite o caminho do símbolo.
Se você desejar analisar o arquivo de despejo de Ajuda, entre em contato com o Microsoft Serviços de suporte técnico. Para obter uma lista completa de serviços de suporte técnico informações sobre os custos de suporte e números de telefone, visite o seguinte Site da Microsoft:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Antes de entrar em contato com o atendimento ao cliente, compacte o arquivo de despejo, o log de desempenho do sistema, o arquivo de relatório de análise e os logs de eventos de atualizada (arquivos. evt). Talvez você precise enviar que esses arquivos para um servidor BizTalk engenheiro de suporte.

A informação contida neste artigo aplica-se a:
  • 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
Palavras-chave: 
kbhowto kbmt KB918643 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 918643  (http://support.microsoft.com/kb/918643/en-us/ )