C# Hangfire Job verursacht das Haufen des Haufens Gedächtnis Gen2 Wachstum, das GC.Collect nicht reinigtC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# Hangfire Job verursacht das Haufen des Haufens Gedächtnis Gen2 Wachstum, das GC.Collect nicht reinigt

Post by Anonymous »

Ich verwende C# und Hangfire, um 8.000 SMS -Nachrichten über einen Hintergrundjob zu senden. Wenn ich dies jedoch in einem einzigen Job ausführe, nimmt Heap Memory (GEN2) die Verwendung erheblich zu, wodurch der Server nicht mehr reagiert. Teilen Sie den Job in kleinere Chargen auf. Anstatt alle 8.000 Nachrichten gleichzeitig zu senden, verarbeiten i ich 100 Nachrichten pro Job . Neue Hangfire-Job im Job selbst mit einer 6-Sekunden-Verzögerung und dies wird fortgesetzt, bis alle Nachrichten verarbeitet werden. Auch nach Abschluss eines Jobs nimmt das Gen2 Heap -Speicher zu und ist nicht veröffentlicht, selbst nachdem er gc.collect () manuell . < BR /> Unten im Bild sehen Sie Zick -Zack -Muster, die jeden Haftfire -Job verarbeitet und Heap -Speicher Gen 2 bleibt oder erhöht. Hier "src =" https://i.sstatic.net/82vbu44t.png "/>
Nach all dem vollständigen Job; Das zugewiesene Heap -Gen2 -Gedächtnis bleibt, nie veröffentlicht, Ich bin mir nicht sicher, wann es veröffentlicht wird.
Was ich ausprobiert habe:

[*] Optimierte Speicherverwendung < /strong>: Objekte entsorgen und gegebenenfalls mithilfe von < /code> Anweisungen verwendet. < /li>
< Strong> Manual Müllsammlung
: Explizit rufen Sie GC.Collect () Am Ende jedes Jobs. Jobs laufen separat und teilen Sie den Zustand nicht unnötig. Dieser Speicher wird nicht veröffentlicht. < /li>
< /ul>
Trotz dieser Bemühungen sammelt sich weiterhin, bis die Anwendung keinen Speicher hat. < /p>
< H3> Schlüsselfragen:

Warum verursacht Hangfire dieses Gen2 -Gedächtniswachstum, obwohl die Arbeitsplätze abgeschlossen sind?
Warum ist gc.collect () diesen Speicher zurückerobern? Nach jeder Arbeitsplatzausführung? Ich verstehe, dass es mit der Funktionsweise von C# und dem Garbage Collector zusammenhängt. erklärt, das Problem bleibt auch nach Abschluss der Hangfire -Aufgabe . Ich habe bereits maximal mögliche Optimierungen im Code angewendet, daher scheint das Problem tiefer zu sein als nur Standard -Speicherlecks. Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post