Artigo: 918643 - Última revisão: segunda-feira, 28 de Fevereiro de 2011 - Revisão: 1.0

Como resolver uma fuga de memória ou de uma excepção de memória esgotada no processo do servidor de BizTalk

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 | Reduzir tudo

Sumário

Fugas de memória são um problema comum. Poderá ter de experimentar vários passos para localizar a causa específica de uma fuga de memória ou de uma excepção de-memória (OOM) no Microsoft BizTalk Server. Este artigo aborda questões importantes a considerar quando está a avaliar a utilização da memória e eventuais problemas relacionadas com a memória. Estas considerações incluem o seguinte:
  • RAM física
  • Processamento de mensagens grandes
  • Utilizar o/3GBparâmetro
  • Utilização de componentes personalizados
  • Qual a versão do Microsoft.NET Framework, o sistema está em execução
  • O número de processadores

INTRODUÇÃO

Este artigo descreve como resolver problemas relacionados com uma fuga de memória ou uma excepção de memória esgotada no processo do servidor de BizTalk do Microsoft BizTalk Servidor.

Mais Informação

O processo do servidor de BizTalk pode estar a ocorrer uma fuga de memória Quando a utilização da memória no Gestor de tarefas do Microsoft Windows consome mais de 50 percentagem de memória RAM física. Uma fuga de memória pode causar uma excepção de memória esgotada Quando a utilização da memória aumenta até o processo de fica sem memória de sistema ou até que o processo deixa de funcionar.

Quando este problema ocorre, uma mensagem de aviso semelhante a seguinte mensagem de erro é registada no registo de eventos:

Evento Tipo: aviso
Categoria do evento: (1)
ID do evento: 5410
Descrição: Ocorreu um erro que requer que o serviço de BizTalk para terminar. As causas mais comuns são uma inesperado do erro de memória e numa incapacidade de ligar ou perda de conectividade a um das bases de dados do BizTalk. O serviço irá encerrar e reiniciar automaticamente dentro de 1 minuto. Se a base de dados problemático permanece indisponível, irá repetir este ciclo.
Mensagem de erro: tipo de excepção System.OutOfMemoryException foi accionada.
Origem do erro:
Anfitrião de BizTalk nome: BizTalkServerApplication
Nome de serviço do Windows: BTSSvc {DCC899FE-C62F-41BE-851A-8720B2EB9C14}

Tipo de evento: aviso
Categoria do evento: (1)
ID do evento: 5410
Descrição: Ocorreu um erro que requer que o serviço de BizTalk para terminar. As causas mais comuns são os seguintes: 1) uma inesperado fora do erro de memória. OU 2) numa incapacidade de ligar ou perda de conectividade a um das bases de dados do BizTalk. O serviço irá encerrar e reiniciar automaticamente dentro de 1 minuto. Se a base de dados problemático permanece indisponível, irá repetir este ciclo.
Mensagem de erro: excepção do tipo 'System.OutOfMemoryException' foi accionada.
Origem do erro: mscorlib
Nome de anfitrião do BizTalk: BizTalkServerApplication
Nome de serviço do Windows: BTSSvc$ BizTalkServerApplication

Considerações importantes

Utilização de RAM e memória física

Uma vez que pode ser um comportamento esperado para um processo utilizar cerca de metade da RAM física, utilize a utilização da memória como orientação. Por exemplo, se o servidor de BizTalk tiver 4 gigabytes (GB) de RAM e o processo do servidor BizTalk utiliza cerca de 500 megabytes (MB) de RAM, não haja fuga. Se o processo do servidor BizTalk utiliza cerca de 1 GB de RAM, poderá existir uma fuga de memória ou de uma situação de memória alta. O consumo de memória pode ser causado por um procedimento armazenado de execução longa ou orchestration. Certifique-se de que sabe que a quantidade de memória o anfitrião de BizTalk normalmente utiliza para determinar se uma fuga de memória ou a condição de memória alta está a ocorrer.

Mensagens grandes

Quando o BizTalk Server processa mensagens grandes, o sistema parece ter uma fuga de memória. No entanto, as mensagens podem estar a utilizar uma grande quantidade de memória. Para mais informações sobre mensagens grandes, visite os seguintes Web sites da MSDN (Microsoft Developer Network):
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 de http://msdn.microsoft.com/en-us/library/aa560481 (BTS.10) (http://msdn.microsoft.com/en-us/library/aa560481(BTS.10).aspx)

Além disso, considere a utilização de memória alta pode esperar que se BizTalk Servidor está a processar mensagens grandes. Poderá pretender actualizar o hardware para satisfazer os requisitos de desempenho do BizTalk Server no seu ambiente.

Quanto tempo demora a reproduzir a fuga de memória

Fugas de memória podem ocorrer imediatamente ou podem acumular-se através de tempo. Ambos os cenários são comuns.

Utilização do parâmetro /3GB em computadores de 32 bits

Normalmente, um processo pode aceder a 2 GB de espaço de endereçamento virtual. O/3GBparâmetro é uma opção para sistemas que necessitam de mais memória endereçável. Esta opção poderá melhorar a utilização da memória para o processamento de mensagens. No entanto, o/3GBcomutador permite apenas 1 GB de memória endereçável para operações de modo kernel. Além disso, este parâmetro pode aumentar o risco da falta de memória de conjunto.

Para mais informações sobre o/3GBparâmetro, visite o seguinte Web site da MSDN (Microsoft Developer Network):
http://msdn.microsoft.com/en-us/library/ms791558.aspx (http://msdn.microsoft.com/en-us/library/ms791558.aspx)
Quando o/3GBcomutador está activada numa versão de 32 bits do Windows, o processo pode aceder a 3 GB de endereço virtual espaço se o processo é grande-endereço tenha em atenção. Um processo é grande-endereço tenha em atenção quando o ficheiro executável tem o sinalizador IMAGE_FILE_LARGE_ADDRESS_AWARE definido no cabeçalho da imagem. Uma vez que o processo de BizTalk é grande-endereço tenha em atenção que BizTalk beneficiarão do parâmetro /3GB.

Se uma instância de anfitrião do BizTalk de 32 bits estiver a executar uma versão de 64 bits do Windows (AMD64), os benefícios do processo de BizTalk da memória 4 GB espaço de endereços porque BizTalk é grande-endereço tenha em atenção. Por conseguinte, se mover as aplicações de memória alta para um servidor de 64 bits, poderá ser a melhor solução.

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

Também deve considerar os bytes virtuais e os bytes de privada utilizados pelo processo. Uma instância de anfitrião do BizTalk (que é um.NET Framework aplicação) poderá receber uma saída de erro de memória antes do valor de bytes do espaço Virtual atinge 2 GB. Isto pode ocorrer mesmo que o máximo de memória endereçável por um processo numa versão de 32 bits do Windows (sem o/3GBparâmetro) é 2 GB. Para obter uma explicação do motivo pelo qual esta situação pode ocorrer, visite os seguintes Web sites da MSDN (Microsoft Developer Network):
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/3GBparâmetro também aumenta o número máximo de bytes privado do processo de BizTalk de 800 MB para 1800 MB. Para mais informações sobre.NET Framework o desempenho de aplicações com o/3GBparâmetro activado, visite o seguinte Web 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 seguinte resume estas informações e inclui os limites de práticos para bytes virtuais e de bytes privados.
Reduzir esta tabelaExpandir esta tabela
ProcessoWindowsMemória endereçável (com um processo com detecção de endereço grande)Limite prático para bytes virtuaisLimite prático para bytes privados
32-bit32-bit2 GB1400 MB800 MB
32-bit32-bit com 3 GB3 GB2400 MB1800 MB
32-bit64 bits4 GB3400 MB2800 MB
64 bits64 bits8 TBNão aplicávelNão aplicável
Para mais informações sobre a memória endereçável para 32 bits versus 64 bits do Windows, visite o seguinte Web 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 seguinte lista de compatibilidade PAE e 3 GB para diferentes versões do BizTalk Server.
Reduzir esta tabelaExpandir esta tabela
ProdutoPAE3 GB
BizTalk Server 2004SimN
BizTalk Server 2006SimSim
BizTalk Server 2006 R2SimSim
BizTalk Server 2009SimSim
Se tem de activar o/3GBmudar para satisfazer os requisitos de desempenho de um computador que é com o BizTalk Server, poderá pretender considerar a adição de servidores para o grupo de BizTalk. Isto permite-lhe por escalar para fora das instâncias de anfitrião que utilizem muita memória.

Componentes de BizTalk que são executados dentro de um processo de ' Serviços de informação Internet ' (IIS) poderá também beneficiar quando o/3GBcomutador está activada.

O/3GBparâmetro não é suportado em computadores que executem o Windows SharePoint Services 2. 0 ou versões posteriores ou o SharePoint Portal Server 2003 SP2 ou versões posteriores.Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Base de dados de conhecimento da Microsoft:
933560  (http://support.microsoft.com/kb/933560/ ) O parâmetro /3GB do Windows Server 2003 não é suportado no Windows SharePoint Services 2. 0 ou versões posteriores ou no SharePoint Portal Server 2003 Service Pack 2 ou de versões posteriores

Utilização de componentes personalizados

Se utilizar componentes personalizados, tais como condutas ou componentes de serviço, tem de saber o que fazer estes componentes. Também tem de saber o efeito potencial estes componentes na utilização da memória. A problema de memória comum ocorre quando um componente está a transformar um documento. O a operação de transformação é uma operação que utilizem muita memória. Quando um documento estiver BizTalk Server transformados, transmite a sequência de mensagem para o Microsoft.NET QuadroXslTransformclasse no âmbito do processo de BizTalk.

Outro problema comum ocorre quando não existe cadeia intensiva manipulação. Cadeia intensiva manipulação pode consumir muita memória. Para mais informações sobre formas de melhorar o desempenho, visite o seguinte Web 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

O Microsoft.NET Framework 2. 0 e o.NET Framework 1. 1 têm o comportamento de memória diferente. Por conseguinte, poderá ver vários resultados entre eles. Se estiver a utilizar o.NET Framework, confirme que o mais tardar.NET Framework Service Pack 1 está instalado. Estes service packs resolvem vários problemas conhecidos de memória. Para mais informações, clique nos números de artigo que se segue:

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 erros corrigidos no.NET Framework 1. 1 Service Pack 1

Número de processadores

O common language runtime (CLR) tem o seguinte lixo colectores (GC):
  • Estação de trabalho (Mscorwks.dll)
  • Servidor (Mscorsvr.dll)
Se o computador com o BizTalk Server é um sistema multiprocessador, o.NET Framework utiliza a versão de servidor do motor de execução. Este é o comportamento predefinido. O colector de lixo de servidor foi concebido para o débito máximo. Além disso, o colector de lixo de servidor pode ser dimensionado para fornecer um desempenho muito alto. Este colector de lixo atribui memória e, em seguida, mais tarde, liberta memória para fornecer o alto desempenho no sistema. Por conseguinte, um computador com o BizTalk Server juntamente com algumas.NET Framework components parece ter uma fuga de memória. No entanto, neste cenário, a elevada utilização da memória é o comportamento esperado. Se o computador ficar sem memória do sistema, ou se o processo deixa de funcionar devido à memória endereçável insuficiente, poderá existir uma condição de fuga de memória.

Se o computador ou seja com o BizTalk Server é um sistema de processador único, o.NET Framework utiliza a versão de estação de trabalho do motor de execução. Esta é a predefinição comportamento. O algoritmo de atribuição do colector de lixo de estação de trabalho não é concebido para o dimensionamento ou para um débito máximo. Utiliza esta colector de lixo métodos do colector de lixo em simultâneo. Estes métodos são concebidos para aplicações que têm interfaces de utilizador complexos. Tais aplicações podem exigir recolha de lixo mais agressiva.

ImportanteEsta secção, método ou tarefa contém passos que explicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo incorrectamente. Por conseguinte, certifique-se de que siga estes passos cuidadosamente. Para uma maior protecção, cópia do registo antes de o modificar. Em seguida, pode restaurar o registo se ocorrer um problema. Para mais informações sobre como efectuar cópias de segurança e restaurar o registo, clique no número de artigo seguinte para visualizar o artigo na Base de dados de conhecimento da Microsoft:
322756  (http://support.microsoft.com/kb/322756/ ) Como efectuar cópias de segurança e restaurar o registo no Windows
Por vezes, poderá ser adequado executar a versão de estação de trabalho do motor de execução num sistema com múltiplos processadores. Pode utilizar a seguinte chave de registo para mudar para a versão de estação de trabalho do motor de execução.

BizTalk 2006 e versões posteriores

Crie a seguinte chave de registo de cadeia de hospedagem da CRL com os valores correspondentes:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\BTSSvc$BizTalkHostNameHospedagem de \CLR

Nome: sabor
Dados: wks

BizTalk 2004

Crie a seguinte chave de registo de cadeia de hospedagem da CRL com os valores correspondentes:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\BTSSvc {GUID} Anfitrião \CLR

Nome: sabor
Dados: wks

Para mais informações, visite os seguintes Web sites da MSDN (Microsoft Developer Network):
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

Utilização da memória de processos e limiares de optimização de utilização de memória física

OUtilização da memória de processoseUtilização da memória físicaoptimização de limiares pode ser alterada no BizTalk Server 2006 e em versões posteriores.
  • Por predefinição, oUtilização da memória de processoslimiar de limitação é definido como 25. Se este valor for excedido e a utilização de memória do processo de BizTalk é a mais de 300 MB, poderá ocorrer uma condição de optimização. Num servidor de 32 bits, pode aumentar o valor de utilização de memória do processo para 50. Num servidor de 64 bits, pode aumentar este valor para 100. Isto permite mais de consumo de memória pelo processo de BizTalk antes de ocorre a optimização.
  • OUtilização da memória físicalimiar de aceleração tem um valor predefinido de 0. Este limiar medidas memória total do sistema. Por conseguinte, se for configurado um valor diferente de 0, uma optimização condição pode ocorrer se um processo no BizTalk não estiver a utilizar memória alta.
Para mais informações sobre os limiares de optimização, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/aa559628.aspx (http://msdn.microsoft.com/en-us/library/aa559628.aspx)

Desidratação de limiares de optimização

Os limiares de desidratação de memória predefinido podem causar demasiado desidratação, quando orchestrations são executadas num anfitrião de 64 bits. Para mais informações sobre este problema, consulte oPropriedades predefinidas de desidrataçãotópico sobre o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/library/aa560586.aspx (http://msdn.microsoft.com/en-us/library/aa560586.aspx)
Notaanfitriões de 64 bits são suportadas no BizTalk Server 2006 e versões posteriores.

Em hardware equivalente numa instância de anfitrião de 32 bits, desidratação observada é nominal quando os mesmos orchestrations são executadas utilizando a desidratação de memória predefinido limiares de optimização.

Uma vez que a arquitectura de 64 bits fornece espaço de endereços de memória expandida (16 TB em vez de 4 GB), as instâncias de anfitrião de 64 bits são atribuídas significativamente mais memória do que instâncias de anfitrião de 32 bits. Isto pode causar os limiares de optimização de memória predefinido ser excedido.

Para contornar este comportamento, altere os valores de VirtualMemoryThrottlingCriteria e PrivateMemoryThrottlingCriteria no ficheiro BTSNTSvc64.exe.config. Utilize os Bytes de Process\Virtual e os contadores do Monitor de desempenho do Process\Private Bytes para determinar a quantidade maior de memória que está a ser atribuída por uma instância de orchestration.
  • Defina o valor de OptimalUsage para ambas as propriedades com base no seguinte:
    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 de contador do Monitor de desempenho de Bytes para uma instância de orchestration \Process\Virtual for 5,784,787,695 bytes (5,517 MB), defina o valor de OptimalUsage para VirtualMemoryThrottlingCriteria a 6,069 MB (5,784,787,695 * 1. 10 = 6,363,266,464.5 bytes). Defina o valor de MaximalUsage para VirtualMemoryThrottlingCriteria a 7,889 MB (6,363,266,464.5 * 1,30 = 8,272,246,403.85 bytes).

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

Para este exemplo, os seguintes valores teriam de ser especificados no ficheiro BTSNTSvc64.exe.config para reduzir a aceleração.
Reduzir esta tabelaExpandir esta tabela
Contador do Monitor de desempenhoMemória atribuídaOptimalUsageMaximalUsage
\Process\Virtual bytes5784787695 bytes (5517 MB)60697889
\Process\Private bytes435689400 bytes (415 MB)457594
Estes valores seriam, em seguida, representados no ficheiro BTSNTSvc64.exe.config do seguinte modo:
<xlangs>
      <Configuration>
                  <Dehydration>
                              <VirtualMemoryThrottlingCriteria OptimalUsage="6069" MaximalUsage="7889" IsActive="true" />
                              <PrivateMemoryThrottlingCriteria OptimalUsage="457" MaximalUsage="594" IsActive="true" />
                  </Dehydration>
      </Configuration>
</xlangs>
Para determinar que anfitrião está em execução instância da orchestration, poderá fazer corresponder o processo de ID do processo de \BizTalk:Messaging\ID e \Process\ID os contadores do Monitor de desempenho do processo. Em seguida, verifique o valor médio apresentado para o correspondente \Process\Virtual Bytes e \Process\Private os contadores do Monitor de desempenho de Bytes.

NotaA desidratação elevada poderá provocar uma diminuição significativa no desempenho quando a base de dados do BizTalkMsgBoxDb está em execução no SQL Server 2008.

O BizTalk Server Service Packs e actualizações cumulativas

BizTalk Server service packs e actualizações cumulativas incluem as correcções mais recentes. Estas incluem as que afectam os problemas conhecidos de System.OutOfMemoryException.

2281783 (http://support.microsoft.com/default.aspx?scid=kb;en-US;2281783) Lista de Service Pack e de actualizaçã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 predefinição, o valor de chave de registo theHeapDeCommitFreeBlockThreshold é 0. Um valor de 0 significa que a área de dados dinâmicos Gestor de decommits de cada página de (KB) de 4 quilobytes que fica disponível. À anulação operações podem provocar a fragmentação de memória virtual. O tamanho dasHeapDeCommitFreeBlockThresholda definição no Gestor de pilha dependerá do tipo de trabalho que o sistema está a fazer. Um tamanho de 0x00040000 é um iniciar recomendada valor.

Considere as seguintes informações antes de alterar o valor do
HeapDeCommitFreeBlockThreshold
registo chave:
  • Esta alteração só se aplica a fragmentação de memória problemas.
  • Esta alteração é todo o sistema. Por conseguinte, será a maior parte dos processos Utilize mais memória durante o arranque.
  • Apenas considerar esta alteração para sistemas que tenham o BizTalk Servidor como a sua missão primário.
Para ajudar a reduzir a fragmentação de memória virtual, pode aumentar o tamanho dasHeapDeCommitFreeBlockThresholddefinir no Gestor de área dinâmica para dados alterando o valor da chave de registo seguinte:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Gestor


Nome do valor: HeapDeCommitFreeBlockThreshold
Tipo de valor: REG_DWORD
Dados do valor: 0x00040000 (este é o valor inicial recomendado.)
Valor predefinido: não presente
Para mais informações sobre a chave de registo HeapDeCommitFreeBlockThreshold, clique no número de artigo seguinte para visualizar o artigo na Base de dados de conhecimento da Microsoft:
315407  (http://support.microsoft.com/kb/315407/ ) A chave de registo de "heapdecommitfreeblockthreshold"

Operações de transformação

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

Para resolver este problema, utilize um dos seguintes métodos:
  • Diminuir o número de mensagens que o servidor BizTalk processos ao mesmo tempo.
  • Reduzir o tamanho da mensagem XML que está a ser transformada.
OSystem.Policy.Security.Evidenceobjecto é frequentemente utilizado em transformações e pode consumir a quantidade de memória. Quando um mapa contém um functoid de script que utiliza inline c# (ou qualquer outra linguagem inline), a assemblagem é criada na memória. OSystem.Policy.Security.Evidenceobjecto utiliza o objecto da assemblagem chamada real. Esta situação cria um objecto de bacelos que não é eliminado até que o serviço de BizTalk for reiniciado.

A maior parte das functoids de BizTalk a predefinição é implementados como script de inline. Estes itens podem causar System. byte [] objectos recolher na memória. Para minimizar o consumo de memória, recomendamos que coloque qualquer mapa que utiliza estes functoids numa assemblagem pequena. Em seguida, fazer referência a essa assemblagem. Utilizar o gráfico seguinte para determinar quais functoids utilizar o script de inline e que functoids não utilizar o script de inline.

Na segunda coluna, "Sim" significa que este functoid é implementada como inline script e de que causará System. byte [] objectos recolher na memória. "Não" significa que este functoid não é implementada como script de inline e que não causará System. byte [] objectos recolher na memória.
Reduzir esta tabelaExpandir esta tabela
FunctoidsScript de inline?
Todos os Functoids de cadeiaSim
Todos os Functoids de matemáticasSim
Todos os Functoids lógicos, excepto IsNilSim
Lógica de IsNil de FunctoidN
Todos os Functoids de data/horaSim
Todos os Functoids de conversãoSim
Todos os Functoids científicosSim
Todos os Functoids cumulativasSim
Todos os Functoids da base de dadosN
Functoids avançadasScript de inline?
Functoid loopN
Functoid de simplificação de mapeamento de valorN
Functoid de asserçãoN
Tabela purgador de FunctoidN
Functoid loop de tabelaN
Functoid de processamento de scripts com Inline c#Sim
Processamento de scripts de Functoid com JScript.NET de InlineSim
O processamento de scripts Functoid com o Inline Visual Basic.NETSim
Functoid de processamento de scripts com o Inline XSLTN
Functoid de processamento de scripts com o modelo de chamada de Inline XSLTN
Functoid a chamar assemblagem externo de processamento de scriptsN
Functoid de valor nuloN
Functoid de mapeamento de valorN
Massa de cópia FunctoidN
Functoid de iteraçãoN
Índice FunctoidN
Functoid de contagem de registosN
BizTalk Server 2006 e versões posteriores melhoram significativamente a gestão de memória para documentos grandes. Para tal, o servidor de BizTalk implementa uma mensagem configurável limite de tamanho para carregar os documentos na memória durante as operações de transformação. O limite de tamanho de mensagem predefinido é 1 MB. Para mais informações sobre a definição de TransformThreshold, visite o Web site da Microsoft Developer Network (MSDN) seguintes:
http://msdn2.microsoft.com/en-us/library/aa560481.aspx (http://msdn2.microsoft.com/en-us/library/aa560481.aspx)

Valores de atributo de grandes dimensões e valores de elemento de grandes dimensões

Quando o BizTalk Server executa uma recepção condutas de longa distância ou uma tubagem de envio num documento XML, o payload é processado de memória, se o documento contém um ou mais das seguintes entidades:
  • Valores de atributo de grandes dimensões
  • Valores de elemento de grandes dimensões
  • Códigos de elemento ou atributo grandes
Para resolver este problema, limite o tamanho destas entidades. Se este método não é possível, certifique-se de que a instância de anfitrião de BizTalk processar múltiplas documentos como estas ao mesmo tempo.

Componentes de tubagens personalizado

Estiver a utilizar um componente de tubagem personalizado que carrega todo transmissão em sequência na memória. Todos os componentes que estão incluídos com o BizTalk Server, excepto as transformações, suporta a transmissão em sequência. Estes componentes não utilizam o máximo memória durante a transmissão em sequência. No entanto, não poderão não suportar a componentes de tubagens personalizado transmissão em sequência.

Transmissão em sequência sob tensão pesado

Envie anfitriões ficou sem memória que operem sob tensão pesado. BizTalk Server enviar tubagens e enviar a transmissão em sequência de suporte de placas. No transmissão em sequência, cada componente carrega um pequeno fragmento da sequência na memória. Uma vez que cada mensagem inclui outras estruturas de dados, juntamente com uma mensagem contexto que pode ser grande ou pequena, este comportamento afecta o comportamento do BizTalk Servidor sob tensão pesado.

O comportamento do BizTalk Server é afectado uma vez que o motor carrega um número de pré-configurado de mensagens. O número de mensagens que carrega o motor baseia-se os valores que aparecem do Campo de LowWaterMark e o campo HighWaterMark da tabela Adm_serviceClass. A tabela de Adm_serviceClass é a base de dados de Gestão BizTalk. Estes valores controlar o número de mensagens que o BizTalk Server processa ou envia o mesmo tempo.

OHighWaterMarkvalor é o número total de mensagens que processa o motor ao mesmo tempo. O valor predefinido é de 200 mensagens por CPU. Por conseguinte, numa 8-processador servidor, o anfitrião de envio irá tentar processar mensagens de 1 600 (200 * 8) ao mesmo tempo. Se assumir que cada mensagem é 50 KB, as mensagens igual a 80 MB (1, 600 * 50 = 80, 000 KB).

Para resolver este problema, pode alterar oHighWaterMarkvalor e oLowWaterMarkvalor na base de dados. Os valores que utilizar dependem do tamanho as mensagens.

Para mais informações sobre causas comuns de um de memória condição, consulte a secção de "Memória crescimento no BizTalk Messaging" no seguinte Web site Microsoft:
http://blogs.msdn.com/biztalkperformance (http://blogs.msdn.com/biztalkperformance)
Para o BizTalk Server 2006 e versões posteriores, pode alterar o anfitrião predefinido definições de optimização. Para mais informações sobre como alterar o anfitrião predefinido definições de optimização, visite o seguinte Web site da Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa559628.aspx (http://msdn2.microsoft.com/en-us/library/aa559628.aspx)

Tente simplificar o problema

Se tiver identificado uma fuga de memória, tente determinar a causa pela remoção de componentes personalizados ou simplificar um mapa. Além disso, tente reproduzir o problema utilizando um orchestration simple ou uma solução simples. Normalmente, que deve criar separado receber anfitriões para recebem placas. Deverá também Crie anfitriões enviar separada para placas de envio. Quando utilizar este método, cada placa pode executar um processo em separado. Por conseguinte, se o processo do servidor de BizTalk experiências uma condição de memória esgotada, será sabe quais os componentes envolvidos.

Os passos de resolução de problemas

Para resolver uma condição de memória esgotada, utilize a depuração Ferramenta de diagnóstico para monitorizar as atribuições de memória ao longo do tempo. O diagnóstico de depuração ferramenta, pode criar e analisar um ficheiro de informação de fuga de memória (. dmp). Quando resolução de problemas de fugas de memória, o objectivo consiste em anexar Leaktrack.dll antes da mais alta Reproduz a condição de memória para memória crescimento ao longo do tempo de captura. Leaktrack.dll é incluído com a ferramenta Debug Diagnostics.
  1. Instale a ferramenta de diagnóstico de depuração.

    O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:

    Reduzir esta imagemExpandir esta imagem
    Transferir
    Transferir o pacote da ferramenta de diagnóstico de Debug. exe agora. (http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3)

    Para mais informações sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo seguinte para visualizar o artigo na Base de dados de conhecimento da Microsoft:
    119591  (http://support.microsoft.com/kb/119591/ ) Como obter o Microsoft support files from online services
    A Microsoft procedeu vírus neste ficheiro. A Microsoft utilizou o software de detecção de vírus mais actual, que estava disponível na data em que o ficheiro tiver sido registado. O ficheiro é armazenado em servidores com segurança melhorada, que ajudam a impedir alterações não autorizadas ao ficheiro.
  2. Utilizar o Monitor de desempenho para recolher dados sobre o sistema desempenho. Estes dados podem fornecer indicadores importantes sobre a eficiência do o ambiente de servidor de BizTalk. O objectivo consiste em capturar o desempenho de processo ao longo do tempo. Por conseguinte, activar o registo do Monitor de desempenho antes da fuga de memória ocorre.

Como utilizar o registo do Monitor de desempenho

Seleccione os dados para iniciar sessão
Para seleccionar os dados para iniciar sessão, utilize o método adequado para o sistema operativo:
  • Para Windows Server 2008 e Windows Server 2008 R2
    1. Em Ferramentas administrativas, abraFiabilidade e o Monitor de desempenho.
    2. Com o botão direitoMonitor de desempenho, clique emNovoe, em seguida, clique emConjunto de Recolectores de dados.
    3. NoNomeEscreva um nome descritivo e, em seguida, clique emSeguinte.
    4. Tome nota do directório raiz e, em seguida, clique emSeguinte.
    5. Clique emIniciar este agora a conjunto de Recolectores de dadose, em seguida, clique emDe conclusão.
    6. ExpandaConjuntos de Recolectores de dados, expandaDefinido pelo utilizadore, em seguida, seleccione o ficheiro.
    7. Com o botão direitoRegisto do Monitor de sistemae, em seguida, clique emPropriedades.
    8. Clique emAdicionarsobre oContadores de desempenhoseparador. Seleccione os seguintes objectos e, em seguida, clique emAdicionarDepois de seleccionar cada objecto:
      • .NET CLR excepções
      • .NET CLR memória
      • BizTalk: Messaging
      • BizTalk:TDDS
      • Memória
      • Processo
      • Processador
      • Orchestrations de XLANG/s
      Se o SQL Server for local, adicione também os seguintes objectos:
      • SQLServer:Databases
      • Estatísticas de SQLServer:General
      • Gestor de SQLServer:Memory
    9. Clique emOK.
    10. Alterar oValor de intervalo de amostracaixa de para5 segundos.

      NotaO valor do intervalo de amostra e a hora para começar a monitorizar são subjectivo. Estes valores dependem quando é reproduzida a fuga de memória. Uma vez que o ficheiro de registo pode ser grande, especifique um intervalo no qual pode obter as informações de que tem de ter sem asfixiam o servidor.
    11. Clique emOK.
    Para parar a recolha de dados, clique emPararsobre oAcçãomenu.
  • Para o Windows Server 2003 ou para o Windows XP
    1. ExpandaRegistos de desempenho e Alertas.
    2. Com o botão direitoRegistos de contadore, em seguida Clique emNovas definições de registo. ONovas definições de registoaparece a caixa de diálogo.
    3. NoNomeEscreva um texto descritivo nome e, em seguida, cliqueOK.
    4. Anote a localização do ficheiro de registo. (Também pode clicar oFicheiros de registoseparador e, em seguida, cliqueConfigurarpara alterar a localização do ficheiro de registo.)
    5. Clique emAdicionar contadores.
    6. SeleccioneTodos os contadoreseTodos os instâncias.
    7. NoObjecto de desempenholista, seleccione os seguintes objectos. Clique emAdicionarDepois de seleccionar cada objecto.
      • .NET CLR excepções
      • .NET CLR memória
      • BizTalk: Messaging
      • BizTalk:TDDS
      • Memória
      • Processo
      • Processador
      • Orchestrations de XLANG/s
      Se o SQL Server for local, adicione também os seguintes objectos:
      • SQLServer:Databases
      • Estatísticas de SQLServer:General
      • Gestor de SQLServer:Memory
    8. Clique emFechar.
    9. Alterar o valorRecolha de dados Intervalopara 5 segundos.

      NotaO valor do intervalo de amostragem de dados e a hora para começar a monitorizar são subjectivo. Estes valores dependem quando é reproduzida a fuga de memória. Uma vez que o ficheiro de registo pode ser grande, especifique um intervalo no qual pode obter as informações de que tem de ter sem asfixiam o servidor.
    10. Clique emOK.
    Para parar a recolha de dados, o botão direito do rato no nome do registo de contador e, em seguida, clique emParar.
Obter o ficheiro de informação
Para obter o ficheiro de informação, utilize um dos seguintes métodos:
  • Método 1: automáticas
    Criar uma regra de memória e fuga de lidar com o DebugDiag é a abordagem recomendada para capturar informações de memória. A regra de memória e fuga de processar anexa automaticamente o Leaktrack.dll. Isto é utilizado para controlar as atribuições de memória. Para criar a regra de memória e processar fuga, siga estes passos:
    1. Inicia o Debug Ferramenta de diagnóstico de 1. 1.
    2. SeleccioneMemória e Handle Leak, e em seguida, clique emSeguinte.
    3. Seleccione aBtsntsvc.exeprocessar e, em seguida, clique emSeguinte.
    4. Na página configurar a regra de fuga, siga estes passos:
      1. Clique para seleccionar oIniciar rastreio imediatamente quando é activada a regra de memóriacaixa de verificação. Caso contrário, pode especificar um tempo de aquecimento, antes de LeakTrack.dll é injectada no processo de BTSNTSvc.exe.
      2. Clique emConfigurar, e, em seguida, efectue o seguinte procedimento:
        • Confirme queCriar automaticamente uma regra de falha de sistemaestá seleccionada. Seleccionando esta opção, uma informação de memória será criada automaticamente se o processo de BTSNTSvc.exe pára.
        • Clique para seleccionar oGerar um userdump quando chegar de bytes do espaço virtuaiscaixa de verificação e manter o valor predefinido de1024.
        • Clique para seleccionar oe cada adicionaiscaixa de verificação e mantenha a predefinição de 200.
        Seleccionando os bytes virtuais chegar a opção, uma informação de memória será automaticamente criada quando bytes do espaço virtuais utiliza 1024 MB. Se os bytes virtuais aumenta em 200 MB, outra informação de memória será criada automaticamente.
      3. Clique emFechar & de guardar.
      4. Clique emSeguinte.
    5. Na página Seleccionar Dump localização e nome da regra, clique emSeguinte.

      NotaTambém pode alterar o caminho do ficheiro de informações de estado doLocalização de Userdumpcaixa nesta página.
    6. Clique emDe conclusãoPara tornar a regra active agora.
    NotaAgora é controlar o estado de regra. Sempre que é criada uma cópia de informação de memória, aumenta o valor na coluna contagem Userdump no separador regras. A localização de informações de estado de memória predefinida é c:\Programas\Microsoft Files\DebugDiag\Logs.
  • Método 2: Manual
    Pode também manualmente anexar Leaktrack.dll e obter manualmente o ficheiro de informação de memória. Isto permite-lhe controlar quando é criada a informação de memória. Para tal, siga estes passos:
    1. Inicia o Debug Ferramenta de diagnóstico de 1. 1.
    2. Faça clique sobre oProcessosno separador.
    3. Com o botão direito doBtsntsvc.exeprocessar e, em seguida, clique emMonitor de fugas.
    4. NoFerramenta de diagnóstico de depuraçãodiálogo Clique emSime, em seguida, clique emOK.
    Crie uma regra de falha de sistema para monitorizar o mesmo processo de Btsntsvc.exe, no caso do processo pára antes de poder criar a informação de memória:
    1. Início Ferramenta de diagnóstico de depuração 1. 1.
    2. SeleccioneFalha de sistemae, em seguida, clique emSeguinte.
    3. SeleccioneUm processo específicoe, em seguida, clique emSeguinte.
    4. Seleccione o mesmo processo de Btsntsvc.exe e, em seguida, clique emSeguinte.
    5. Sobre oConfiguração avançada (opcional)página, clique emSeguinte.
    6. NoSeleccione a localização de informações de estado e o nome da regra (opcional)caixa de diálogo, clique emSeguinte.
    7. SeleccioneActivar a regra agorae, em seguida, clique em ' Concluir '.
    Quando o processo de atingir 60 por cento para 80 por cento da RAM, o processo de Btsntsvc.exe com o botão direito e, em seguida, clique emCriar Full Userdump. Se o processo de BizTalk pára antes de poder criar as informações de estado do utilizador, a regra falha deve entrem em vigor e criar as informações de estado da memória.
Parar o registo do Monitor de desempenho
Se estiver a capturar uma informação de memória e os dados do Monitor de desempenho, deixar de cerca de dois minutos depois de criada a informação de memória de registo do Monitor de desempenho.
Analisar o ficheiro de informação
Para ajudar a determinar a causa de uma fuga de memória, pode utilizar a depuração Ferramenta de diagnóstico para analisar o ficheiro de informação. Para tal, siga estes passos:
  1. Faça clique sobre oAnálise avançadano separador.
  2. Clique emAdicionar ficheiros de dadose, em seguida, localize o ficheiro. dmp.
  3. Seleccione aAnálise de pressão de memóriascript e, em seguida, cliqueIniciar análise.
Por predefinição, um ficheiro de mapa de análise (. mht) será criado na pasta c:\Programas\Microsoft Files\DebugDiag\Reports quando a análise estiver concluída. O ficheiro de relatório serão também apresentado no browser. O ficheiro de relatório contém os resultados da análise. Além disso, o ficheiro de relatório pode conter recomendações para a resolução a fuga de memória.

Se utilizar personalizada DLLs, pode adicionar o caminho de símbolos dos ficheiros. pdb personalizados para análise. Fazer Isto, siga estes passos:
  1. Abra a ferramenta Debug Diagnostics.
  2. Sobre oFerramentasmenu, clique emOpções e definições.
  3. NoCaminho de procura de símbolos de depuraçãoEscreva o caminho de símbolos.
Se pretender analisar o ficheiro de informação de ajuda, contacte a Microsoft Serviços de suporte de cliente. Para obter uma lista completa dos serviços de suporte de cliente informações sobre custos de suporte e de números de telefone, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
Antes de contactar o suporte técnico, comprima o ficheiro de informação, o registo do Monitor de desempenho, o ficheiro de mapa de análise e os registos de eventos actualizados (ficheiros. evt). Poderá ter de enviar o que engenheiro de suporte estes ficheiros para um servidor de BizTalk.

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )