überschreiten Verzeihung, wenn dies mehr Serverfault vs Stackoverflow ist. Es scheint an der Grenze zu sein.Wie kann ich die 60% Speicherlimit von IIS7 in ASP.NET Caching-Anwendung
Wir haben eine Anwendung, die eine große Menge an Produktdaten für eine E-Commerce-Anwendung mit ASP.NET-Caching zwischenspeichert. Dies ist ein Dictionary-Objekt mit 65K-Elementen, und unsere Berechnungen legen die Größe des Objekts auf ~ 10 GB fest.
Problem:
Die Größe des Speichers scheint das Objekt verbraucht über unsere 10GB Berechnung weit zu sein.
GRÖSSTE CONCERN: Wir können nicht scheinen über 60% der 32 GB im Server zu verwenden.
Was wir bisher versucht:
In machine.config/system.web (sf erlaubt nicht die Tags, verzeihen Sie die Formatierung):
processModel autoConfig="true" memoryLimit="80"
in web.config/system.web/Caching/Cache (sf erlaubt nicht die Tags, die Formatierung verzeihen):
privateBytesLimit = "20000000000" (and 0, the default of course)
percentagePhysicalMemoryUsedLimit = "90"
Umwelt: Windows-2008R2 x64 32GB RAM IIS7
Nichts scheint uns den 60% Wert überschreiten zu können. Siehe Screenshot von taskman.
http://www.freeimagehosting.net/image.php?7a42144e03.jpg
Eine fundierte Vermutung: Der Server passt seinen Arbeitsspeicher neu an, um ihn an die erhöhte Arbeitslast anzupassen, indem er mehr Auslagerungsdatei verwendet, um Speicherausfälle auszugleichen, oder Speicher schneller entsorgt. So ähnlich. Wie sieht die Registerkarte "Leistung" in Taskman aus, wenn Sie die Last erhöhen? Erhöht sich die Größe der Auslagerungsdatei? –
@Robert: Swap bleibt ziemlich flach (was sinnvoll ist, da es sich um einen In-Memory-Cache handelt). Aber es lohnt sich zu überprüfen. @all: Ich frage mich, ob die schiere Größe eines einzelnen Objekts das Problem ist. Benötigt der GC einen gewissen "Spielraum" zum Verschieben von Objekten und dieses _ein_ Objekt hat das überschritten? – evilknot
Tauschen Sie Objekte in und aus dem Wörterbuch aus? Wenn Sie das tun, könnte das Druck auf den GC ausüben, da jeder Tausch ein Objekt freigibt, das irgendwann entsorgt werden muss. Der GC wartet möglicherweise nicht darauf, dass Ihnen nicht genügend Arbeitsspeicher zur Verfügung steht, bevor eine Sammlung durchgeführt wird. Einige Speicherprofile könnten in Ordnung sein. –