2012-08-16 7 views
7

Ich verwende die neueste Version von ionic zip Version 1.9.1.8. Ich habe die Eigenschaft von ionic zip ParallelDeflateThreshold = 0 festgelegt. Der Zipping-Mechanismus funktionierte in den letzten zwei Monaten perfekt. Plötzlich hörte dies auf zu funktionieren. Der Zipping-Thread blieb einfach hängen, der ionische Zip erzeugte nur die tmp-Datei und konnte die Zip-Datei nicht erstellen. Ich könnte dieses Problem auch bei kleiner Dateigröße problemlos reproduzieren.Komprimierung schlägt fehl, wenn ionischer Zip verwendet wird

Meine Analyse für dieses Problem ist als

Das Problem mit der neuesten Version von ionischem Reißverschluss war folgt, in diesem Fall die ionische zip gehängt, während die Dateien Reißverschluss zu schaffen. Wir haben festgestellt, dass einige andere Benutzer, die diese DLL verwenden, auch solche Fehler auf ihrer Site gemeldet haben. Bitte beziehen Sie sich auf the link. Dieses Problem wird durch die Deaktivierung ParallelThreshold Eigenschaft der ionischen Zip gelöst, aber es wird die Leistung für große Protokolldateien verzögern, da es auf Single-Thread statt Multithread-Modus funktioniert.

Das Problem wurde jetzt behoben, indem die Eigenschaft ParallelDeflateThreshold auf den Standardwert gesetzt wurde. Die genaue Ursache dieses Problems konnte jedoch nicht gefunden werden. Warum schlägt das Zippen plötzlich fehl? Es gab keinen Maschinenwechsel.

+0

Jemand auf http://dotnetzip.codeplex.com/ könnte helfen können. – Surfbutler

Antwort

15

Ich war mit einem ähnlichen Problem konfrontiert, mit kleineren Zip-Dateien von weniger als 20-25 MB, dauerte es 3-4 Sekunden, aber alles, was größer als das, dauerte es unendlich viel Zeit. Code hat die Ausführung nie beendet.

Ich begann mir Sorgen zu machen, dass es vielleicht die falsche Entscheidung war, die DotNetZip-Bibliothek zu verwenden, da wir mit Zipfiles bis zu 500MB arbeiten.

Vor der Zeile, in der Zip-Datei gespeichert wird, fügte ich hinzu: zip.ParallelDeflateThreshold = -1;

Dies stellt sicher, dass separate Threads nie erstellt werden. Sieht so aus, als ob die ZIP-Dateien einen bestimmten Schwellenwert überschreiten, erstellt DotNetZip weiterhin zahlreiche Threads, die beim Erhalt der endgültigen Zip-Datei zu einer sehr langen Latenz führen.

+0

Es ist seltsam, dass der DotNetZip ein solches Verhalten auf großen Dateien zeigt. Wie auch immer, ich habe diese Eigenschaft auf den Standardwert gesetzt (-1, wenn ich nicht falsch bin) und nun funktioniert es. Danke – Techy

+0

Sie sind Willkommen. – Kimi

Verwandte Themen