Memoria cache appFabric molto intensiva

La domanda (s): Sto facendo qualcosa di sbagliato? Impostazione errata della configurazione? La quantità di memoria utilizzata da AppFabric è mostrata al di sotto del normale?

Il problema: sto leggendo i dati da una tabella di database SQL nella memoria cache AppFabric. Sembra che AppFabric utilizzi una grande quantità di memoria per un object abbastanza piccolo e non riesco a capire perché (ho recentemente iniziato ad usare ApppFabric-quindi sono un noob con esso)

Descrizione: una tabella SQL di circa 60 MB converti in circa 800 MB una volta nella cache di AppFabric.

Dettagli:

Dimensione dei dati SQL della tabella che intendo caricare:

    Dimensione dei dati SQL

    Utilizzo memoria intriggers di App Fabric:

    Utilizzo inattivo di AppFabric

    Config server:

       

    Configurazione client:

        

    Il codice C #:

     public static void ReadPortedNumbers() { MobileDataContext mdc = null; List col; try { mdc = new MobileDataContext(strConnString); col = (from RN in mdc.tblRoutedNumbers select Convert(RN)).ToList(); var CacheFactory = new DataCacheFactory(); var myCache = CacheFactory.GetCache("MobileCache"); myCache.Put("PortedNumberCollection", col); } catch (Exception E) { throw new System.Exception(E.GetType().ToString() + " in BG.Mobile.DAL.ReadPortedNumbers, Message : " + E.Message, E); } finally { if (mdc != null) mdc.Dispose(); } } public static PortedNumberCollection Convert(tblRoutedNumber DataClass) { try { PortedNumberCollection BusinessClass = new PortedNumberCollection(); BusinessClass.PortedID = DataClass.PortedID; BusinessClass.MSISDN = DataClass.MSISDN; BusinessClass.RoutingLabel = DataClass.RoutingLabel; BusinessClass.RouteAction = DataClass.RouteAction; return BusinessClass; } catch (Exception E) { throw new System.Exception(E.GetType().ToString() + " in BG.Bus.Mobile.DALConvertor.Convert(tblRoutedNumber DataClass): " + E.Message); } } [DataContract][Serializable] public class PortedNumberCollection { [DataMember] public Int64 PortedID; [DataMember] public string MSISDN; [DataMember] public string RoutingLabel; [DataMember] public string RouteAction; } 

    Utilizzo della memoria di AppFabric una volta caricati i dati (put) : Utilizzo della memoria di AppFabric una volta caricati i dati (put)

    Se si utilizza AppFabric 1.1, è necessario sapere che è GC interno non rilascia alcuna memoria allocata. Pertanto, se si è certi della quantità di memoria che si desidera utilizzare o di avere LRU abilitato, è ansible limitare la memoria per l’host CacheCluster (ad esempio SET-CacheHostConfig -HostName ServerName -CachePort PORT -CacheSize 1024 ). Ciò garantirà che l’utilizzo della memoria non sia SUPERIORE a tale livello. È importante capire che si insinuerà inevitabilmente fino a quel livello.

    Vorrei rispondere alla mia stessa domanda per eventuali futuri utenti che leggeranno questo.

    Non utilizzare AppFabric piuttosto guardare prodotti come Redis o MemCached. Sono migliori in ogni modo che io possa vedere.

    AppFabric ha ancora troppi problemi per essere nei miei sistemi di produzione.