Memoria de caché de AppFabric muy intensiva

La (s) pregunta (s): ¿Estoy haciendo algo mal? ¿Configuración incorrecta de configuración? ¿La cantidad de uso de memoria de AppFabric que se muestra a continuación es normal?

El problema: estoy leyendo los datos de una tabla de base de datos SQL en la memoria caché de AppFabric. Parece que AppFabric usa una gran cantidad de memoria para un objeto bastante pequeño y no puedo entender por qué (recientemente comencé a usar ApppFabric, así que soy un noob con él)

Descripción: una tabla SQL de aproximadamente 60 MB se convierte en aproximadamente 800 MB una vez en el caché de AppFabric.

Detalles:

Tamaño de datos SQL de la tabla que pretendo cargar:

Tamaño de datos SQL

Uso de la memoria inactiva de Fabric de aplicaciones

Uso inactivo de AppFabric

Configuración del servidor:

   

Configuración del cliente:

    

El código 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; } 

Uso de la memoria de AppFabric una vez que se cargan (ponen) los datos : Uso de la memoria de AppFabric una vez que se cargan los datos (poner)

Si está utilizando AppFabric 1.1, debe saber que su GC interno no libera ninguna memoria asignada. Por lo tanto, si está seguro de la cantidad de memoria que desea utilizar O tiene LRU habilitado, puede limitar la memoria para el Host de CacheCluster (por ejemplo, SET-CacheHostConfig -HostName ServerName -CachePort PORT -CacheSize 1024 ). Esto asegurará que su uso de memoria no esté por encima de ese nivel. Es importante entender que se arrastrará hacia ese nivel inevitablemente.

Me gustaría responder mi propia pregunta para cualquier futuro usuario que lea esto.

No utilice AppFabric, sino que busque productos como Redis o MemCached. Son mejores en todo lo que puedo ver.

AppFabric todavía tiene demasiados problemas para que esté en mis sistemas de producción.

    Intereting Posts