COM+ e problemas de memória

Onde trabalho possuímos uma infra que serve de façade para a chamada de componentes dos sistemas de forma remota. Esta forma remota pode ser desde estações de usuário para servidores de componentes, servidores web para servidores de componentes e mesmo entre servidores de componentes. Ela é um pacote COM+, e chama componentes que estão também hospedados no COM+ (temos muito legado aqui, vai demorar para sair dessa tecnologia).

Recentemente deparamos com um problema de alto consumo de memória do nosso processo dllhost.

Pedimos um dump deste processo (windbg), e ao analisar, encontrei muitas entradas de System.OutOfMemoryException. Ao verificar a causa dessas exceptions, encontrei a seguinte mensagem: Retrieving the COM class factory for component with CLSID {6DEDD69A-065F-4781-90A7-35E0E0DEB4BA} failed due to the following error: 8007000e. O componente que está se querendo instanciar é um DTO nosso, e não está sendo possível pelo erro de falta de memória.

Encontrei um KB que fala sobre isso: http://support.microsoft.com/?scid=kb%3Ben-us%3B890425&x=7&y=14, e talvez possa relacionado. Ele diz que o RPC tem uma limitação de quantidade de interfaces únicas que podem ser chamadas entre processos no COM+. Como resultado, erros de OutOfMemory (8007000e) podem aparecer.

Ainda não temos um parecer final, mas estamos seguindo por essa linha para resolver a questão.

[]'s

UPDATE - 21/05/2009:

Desistimos de tentar descobrir o problema neste servidor (acontece em apenas uma máquina, outros executam o mesmo sistema sem o erro)...

Comentários

Postagens mais visitadas deste blog

Trocando configurações padrão do Live TIM

Uma proposta de Clean Architecure com Modelo de Atores

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS