Ich habe einen kleinen WCF-Dienst, der auf einer XP-Box mit 256 MB RAM in VM ausgeführt wird.aspnet_wp recycelt wegen des hohen Speicherverbrauchs. Wie kann ich es reparieren?
Wenn ich eine Anfrage (mit einer Anfrage Größe von ca. 5mbs) zu diesem Dienst ich die folgende Meldung im Ereignisprotokoll immer erhalten:
aspnet_wp.exe recycelt wurde, weil der Speicherverbrauch der 153 MB überschritten (60 Prozent des verfügbaren RAM).
und der Anruf wird mit Fehler 500
Ich habe versucht, Speichergrenze auf 95% zu erhöhen, aber es dauert noch alle verfügbaren Speicher und nicht auf die gleiche Weise.
Es sieht aus wie etwas mit meiner App ist falsch (ich nicht Byte [] Puffer und vielleicht etwas anderes), aber ich kann nicht finden Ursache für solche Speicherüberlastung.
Das Profiling hat gezeigt, dass alle CLR-Objekte, die ich gemeinsam im Speicher habe, nicht so viel Platz einnehmen.
Eine Dump-Analyse mit windbg zeigte die gleiche Situation - nichts so großes im Objekt-Heap.
Wie kann ich herausfinden, was zu einer solchen Speicherüberlastung beiträgt?
Gibt es eine Möglichkeit, einen Dump unmittelbar vor dem Recycling des Prozesses (während der maximalen Speicherbelegung) zu machen?
Ich habe ziemlich viel gelernt mit Tess Walkthroughs und den Debug-Tools. Es ist definitiv Ihre Zeit wert. –
Danke. Ich reparierte das nicht wirklich, da mir gesagt wurde, dass wir keine so schlechten Maschinen in Produktion haben und Speicher nicht auszulaufen scheint. Wie auch immer - Ich habe meinen eigenen MultiBufferMemoryStream implementiert, der IXmlSerializable implementiert: D –