Re: [bofhers] Garbage collector de .NET

  • From: Wardog <wardogyelmundo@xxxxxxxxx>
  • To: BOFHers <bofhers@xxxxxxxxxxxxx>
  • Date: Tue, 6 May 2014 00:46:03 +0200

Voto por lo mismo. Si no cierras las conexiones a la base de datos aquello
empieza a devorarse a sí mismo a poco que le des candela. Ojo también al
ámbito de datareaders y qué se deja ahí metido.


El 5 de mayo de 2014, 23:53, f5inet <f5inet@xxxxxxxxx> escribió:

> suena a que las conexiones a la BBDD no se cierran explicitamente en el
> webservice y se queda con mogollon de conexiones a la BBDD abiertas. hasta
> que no se reinicia el runtime o se fuerza un GC no se liberan
> 'implicitamente' las conexiones.
>
> de todas maneras, creo que una llamada a System.GC.Collect() deberia ser
> suficiente.
>
> te recomendaria hacer un LOG en cada webservice, que logueara el resultado
> de GC.GetTotalMemory(false), y ver si a partir de cierta memoria ocupada
> empieza a quedarse tonto el webservice. si es asi, con hacer que se ejecute
> el GC.Collect() si lo que devuelva GC.GetTotalMemory(false) es mas del 50%
> de cuando se queda tonto, deberia ser suficiente.
>
> tambien es posible que necesites llamar a GC.WaitForPendingFinalizers(),
> para asegurarte que los objetos 'tontos' son finalizados correctamente
> antes de seguir ejecutando codigo y metiendo mas basura al Heap.
>
>
> El 5 de mayo de 2014, 21:43, Carlos Melgarejo 
> <zerocool.cmg@xxxxxxxxx>escribió:
>
> Buenas noches BOFHmanos,
>>
>> Tengo un problema con el GC de .NET y me gustaría saber si alguno lo ha
>> tenido y como lo puedo solucionar.
>>
>> Expongo el pifostio:
>>
>> Tengo una aplicación, la cual saca chicha de una bbdd (irremediablemente)
>> SQLServer. En un principio estaba App -> BBDD, todo funcionando a la
>> perfección y la hostia de rápido.
>>
>> Llego el momento en el que el cliente pidió un WebService, y debía ser en
>> .NET C#.
>>
>> Aquí viene el problema, el WS, tras 3 o 4 días, se queda atontado y
>> bloquea todo el sistema de datos, teniendo que reiniciar el site de IIS.
>>
>> En uno de los bloqueos, dijimos a los técnicos (por llamarlos de alguna
>> manera) que no reiniciaran, y lanzamos un forzado de limpieza de GC, dando
>> en la clave del bloqueo. Al limpiarse, volvió a la vida la criaturita.
>>
>> Entonces, sabéis de alguna forma de que no pase esto con el Recolector?
>>
>> La última opción es poner un forzado de limpieza cada noche, o incluso
>> (mucho mas hardcore) un forzado de limpieza, al final de cada petición.
>>
>> Muchas gracias por las respuestas que podáis dar.
>>
>> Un saludo y a cuidarse.
>>
>
>

Other related posts: