【问题标题】:Compression fails when using ionic zip使用 ionic zip 时压缩失败
【发布时间】:2012-08-12 10:43:57
【问题描述】:

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

我对这个问题的分析如下

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

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

【问题讨论】:

标签: c# zip zipfile dotnetzip


【解决方案1】:

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

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

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

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

【讨论】:

  • 奇怪的是,DotNetZip 在大文件上显示出这样的行为。无论如何,我已将此属性设置为默认值(如果没有错,则为-1),现在它可以工作了。谢谢
猜你喜欢
  • 2018-01-25
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 2015-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多