Desafio da Semana 6


DESAFIO DA SEMANA #6

Por: Roberto Alexis Farah

Oi pessoal! Dessa vez apresento um desafio de ASP.

CENÁRIO

Imagine que você precise auxiliar um cliente que possui uma página ASP que quando processada ocasiona, muitas vezes, erro de memória no VBScript e memory leak.

O cliente e consultores analisaram a página ASP suspeita e concluíram que tudo estava correto, então solicitaram sua ajuda. Após coletar um dump de memória do processo do IIS durante os sintomas e analisá-lo você identifica e comprova que a página ASP sendo executada é a mesma que o cliente suspeitava, então com os logs de Performance Monitor você identifica que, de fato, há um memory leak. Afinal, erros de memória poderiam ser por outros fatores, como, por exemplo, fragmentação demasiada da memória.

Portanto, agora você deve examinar a página ASP que origina o sintoma, identificar e corrigir o problema.

Fragmento da página ASP:

do while not oRsNivel.eof
Set oRsNivelAcess = Server.CreateObject("ADODB.RecordSet")
if Request.QueryString("seguranca") = "Nivel de Informacoes" then
strSQLAcess =… ß Aqui há uma query qualquer.
else
strSQLAcess =... ß Aqui há uma query qualquer.
end if
oRsNivelAcess.Open strSQL, Conn, 3, 3
Response.WriteBlock(56)
Response.Write(oRsNivel("nivel"))
Response.WriteBlock(57)
...

... utiliza oRsNivelAcess

...
Response.WriteBlock(59)
oRsNivel.movenext
loop

... ß Fecha oRsNivel e libera-o da memória. Mesmo com a conexão.

...

...

SINTOMA

- Memory Leak isolado na execução de uma página ASP.

- Erro de out of memory propagado pelo processo executando a página ASP.

OBJETIVO

Identifique o PROBLEMA ocasionando o sintoma de memory leak e proponha uma SOLUÇÃO.

Para os que dominam ASP vocês podem tentar reproduzir o problema em uma página ASP.

Até semana que vem! J