我使用的是离子拉链版本1.9.1.8的最新版本。我已经设置了离子拉链ParallelDeflateThreshold = 0
的属性。在过去的两个月里,压缩机制工作得很好。突然间,这停止了工作。压缩线程只是挂起,离子zip只是创建了tmp文件而无法创建zip文件。即使文件很小,我也可以轻松地重现这个问题。
我对此问题的分析如下
问题在于最新版本的离子拉链,在这种情况下,离子拉链在创建zip文件时被挂起。我们注意到,使用此dll的其他几个用户也在其网站中报告了此类错误。请参考the link。此问题将通过禁用离子zip的ParallelThreshold
属性来解决,但它会延迟大型日志文件的性能,因为它可以在单线程而不是多线程模式下工作。
现在通过将ParallelDeflateThreshold
属性设置为默认值来解决问题。但是我找不到这个问题的确切原因。为什么拉链会突然失败?没有机器更换。
答案 0 :(得分:18)
我遇到了类似的问题,小的拉链文件小于20-25MB,花了3-4秒,但是比这更大,它花了无限的时间。代码从未完成执行。
我开始担心使用DotNetZip库可能是错误的决定,因为我们使用的zipfiles高达500MB。
在保存zip文件的行之前,我添加了:zip.ParallelDeflateThreshold = -1;
这可确保永远不会创建单独的线程。看起来一旦zip文件超过某个阈值,DotNetZip就会不断创建大量线程,从而导致获得最终zip文件的延迟非常大。