8

我正在使用最新版本的 ionic zip 版本 1.9.1.8。我已经设置了 ionic zip 的属性 ParallelDeflateThreshold = 0。压缩机制在过去两个月中运行良好。突然停止工作。压缩线程只是挂起,ionic zip 刚刚创建了 tmp 文件并且无法创建 zip 文件。即使文件很小,我也可以轻松重现此问题。

我对这个问题的分析如下

问题在于 ionic zip 的最新版本,在这种情况下,离子 zip 在创建 zip 文件时挂起。我们注意到,使用此 dll 的其他几个用户也在他们的站点中报告了此类错误。请参考链接。这个问题将通过禁用ParallelThresholdionic zip 的属性来解决,但它会延迟大型日志文件的性能,因为它适用于单线程而不是多线程模式。

现在通过将ParallelDeflateThreshold属性设置为默认值解决了这个问题。但是我找不到这个问题的确切原因。为什么压缩突然失败?没有更换机器。

4

1 回答 1

18

我遇到了类似的问题,较小的 zip 文件小于 20-25MB,需要 3-4 秒,但任何大于此的时间都需要无限时间。代码从未完成执行。

我开始担心使用 DotNetZip 库可能是一个错误的决定,因为我们使用的 zipfile 最大为 500MB。

在保存 zip 文件的行之前,我添加了:zip.ParallelDeflateThreshold = -1;

这确保永远不会创建单独的线程。看起来一旦 zip 文件超过某个阈值,DotNetZip 就会不断创建大量线程,从而导致获取最终 zip 文件的延迟非常大。

于 2012-10-31T16:28:25.317 回答