[Mono-dev] Improving memory usage in /System.Web.SessionState/SessionSQLServerHandler.cs

Robert Jordan robertj at gmx.net
Tue Nov 28 04:53:09 EST 2006


Hi Hubert,

Hubert FONGARNAND wrote:
> Could someone commit this patch?

Let me check it first against another DB providers.

Robert

> Thanks
> 
> Le lundi 27 novembre 2006 à 12:17 +0100, Hubert FONGARNAND a écrit :
> 
>> Hi,
>>
>> When using Npgsql, if you try to send (INSERT or UPDATE) a bytea
>> (blob) element without using "Prepare" it will be sent as a Escaped
>> string... This string is 4x bigger than the real bytea...
>> So : The memory usage on the ASP.NET server is enormous when the blob
>> is more than 1MB... and the network traffic is enormous too!
>> (see
>> http://pgfoundry.org/tracker/index.php?func=detail&aid=1000458&group_id=1000140&atid=590)
>>
>> If you want to avoid that you've to use Prepare before executing
>> ExecuteNonQuery, or ExecuteReader...
>> If you don't believe me use Ethereal (wireshark)
>>
>> Here's a patch that add a cmd.Prepare allowing Npgsql sending data in
>> binary format!
>> This patch shouldn't change anything if you use other connector than
>> Npgsql.
>>
>> Thanks to review it!
>>
>> Hubert FONGARNAND
>>
>>
>>
>>
>> Index: mcs/class/System.Web/System.Web.SessionState/SessionSQLServerHandler.cs
>> ===================================================================
>> --- mcs/class/System.Web/System.Web.SessionState/SessionSQLServerHandler.cs     (révision 68495)
>> +++ mcs/class/System.Web/System.Web.SessionState/SessionSQLServerHandler.cs     (copie de travail)
>> @@ -196,6 +196,7 @@
>>                         command.CommandText = selectCommand;
>>                         command.Parameters.Add (CreateParam (command, DbType.String, "SessionID", id));
>>                         command.Parameters.Add (CreateParam (command, DbType.DateTime, "Expires", DateTime.Now ));
>> +                       command.Prepare();
>>                         return command.ExecuteReader ();
>>                 }
>>  
>> @@ -253,7 +254,7 @@
>>                                                    session.StaticObjects.ToByteArray ()));
>>                         param.Add (CreateParam (command, DbType.Binary, "SessionData",
>>                                                    session.SessionDictionary.ToByteArray ()));
>> -
>> +                       command.Prepare();
>>                         command.ExecuteNonQuery ();
>>                 }
>>  
>> @@ -287,6 +288,7 @@
>>                         param.Add (CreateParam (command, DbType.Int32, "Timeout", timeout));
>>                         param.Add (CreateParam (command, DbType.Binary, "SessionData",
>>                                                                 dict.ToByteArray ()));
>> +                       command.Prepare();
>>  
>>                         command.ExecuteNonQuery ();
>>                 }
>>
>>
>>
>> _______________________________________________
>> Ce message et les ventuels documents joints peuvent contenir des
>> informations confidentielles.
>> Au cas o䵲 il ne vous serait pas destin, nous vous remercions de bien
>> vouloir le supprimer et en aviser imm洸diatement l'expditeur. Toute
>> utilisation de ce message non conforme ⭁ sa destination, toute
>> diffusion ou publication, totale ou partielle et quel qu'en soit le
>> moyen est formellement interdite.
>> Les communications sur internet n'tant pas s牌curises, l'intߜgrit de
>> ce message n'est pas assurŨe et la socit㵵 mettrice ne peut 攮tre
>> tenue pour responsable de son contenu. 
>>
>> _______________________________________________
>> Mono-devel-list mailing list
>> Mono-devel-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> _______________________________________________
> Ce message et les �ventuels documents joints peuvent contenir des informations confidentielles.
> Au cas o� il ne vous serait pas destin�, nous vous remercions de bien vouloir le supprimer et en aviser imm�diatement l'exp�diteur. Toute utilisation de ce message non conforme � sa destination, toute diffusion ou publication, totale ou partielle et quel qu'en soit le moyen est formellement interdite.
> Les communications sur internet n'�tant pas s�curis�es, l'int�grit� de ce message n'est pas assur�e et la soci�t� �mettrice ne peut �tre tenue pour responsable de son contenu.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list




More information about the Mono-devel-list mailing list