Pergunta

NOTA: Não pude decidir se isso foi mais apropriado para o excesso de pilha ou o ServerFault; portanto, se você tiver algumas dicas sobre isso, entre em contato.

Fundo: Recentemente, meu servidor (Windows 2000, MS SQL 2005, IIS 5.0, ASP Classic) experimentou um aumento no tráfego para um conjunto específico de páginas ASP. Esse pico causou um enorme dreno sobre o processador, pulando em 100% e causando todos os tipos de problemas de tempo limite para os visitantes.

Na verdade, lidamos com volumes maiores no tráfego do que isso sem erro. O problema parecia ser que os scripts ASP específicos que estão sendo chamados estavam usando uma enorme quantidade de tempo do processador. Usando o Process Explorer da SYSINTERNALS, descobri que o dllhost.exe estava ocupando todo o tempo do processador. Olhando para seus threads, o culpado foi chamadas para COMSVCs.dll, que parece ser objetos com+.

Então, parece que minhas páginas ASP estão chamando objetos com+ e está matando meu processador.

Aqui está a pergunta: Como determinar quais partes dos meus scripts ASP estão chamando de objetos COM+ e como eu começaria a melhorar o desempenho dessas peças? Basicamente, não tenho experiência na programação do Windows, por isso tenho uma perda de como começar.

Obrigado pela ajuda.

Foi útil?

Solução

Nem com+ ou dllHost provavelmente são o seu problema, eles são apenas os contêineres em que o site e os objetos COM estão executando. Os objetos reais que estão sendo "alimentados" são o seu problema e/ou os caminhos/frequência que estão sendo chamados pelo aplicativo web.

Uma maneira mais produtiva de isolar o problema seria examinar os logs do IIS para as páginas com o tempo de processamento mais longo e fazer com que um programador analise o que está acontecendo nessa página e quais objetos estão sendo chamados.

Especificamente, verifique a coluna "tempo de tempo" no log do IIS.

Outras dicas

Para determinar quais objetos estão sendo chamados, procure

 <OBJECT ID=MyObject RUNAT=SERVER PROGID=MyDll.MyObject></OBJECT>

ou

 set myObject = server.createobject("MyDll.MyObject")

dentro de suas páginas ASP.

Cuidado que isso pode estar chamando a DLL padrão (não com+ objetos). O método de instanciação é o mesmo para os dois tipos.

Se você quiser saber quais processos COM+ você está executando, consulte o aplicativo de serviços de componentes.

TEXTO DE ALT HTTP://img38.imageshack.us/img38/5062/capturerm.png

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top