c# - 使用 C# 更高效地创建 zip 文件
问题描述
精简版
在 C# 中是否有比使用更有效或资源更少的方法来递归地创建文件夹的 zip 文件System.IO.Compression.ZipFile.CreateFromDirectory
?
长版
我有一个在 Azure 应用服务中运行的 REST API(以 P2V2 420 总 ACU 和 7 GB 内存进行扩展)。我的一个端点接受一个 POST 请求并使用以下代码生成一个 zip 文件。然后它返回以标准 JSON 格式包装生成的 zip 文件的名称。
System.IO.Compression.ZipFile.CreateFromDirectory(sourcePath, outputPath);
这在我的本地机器上运行良好,但在云服务器上似乎存在扩展问题。当我扩展到下一级应用程序服务(P3V2 820 ACU,14GB 内存)时,它运行良好,但没有扩展 API 会返回 503 Service Unavailable 消息。我不确定哪个资源受到限制(cpu、内存、磁盘等),但我认为这不是服务器超时问题,因为它只运行大约 10-20 秒。生成的 zip 文件大约有 400 个文件或 200MB 压缩。
我的问题是,由于扩大规模每月额外花费 120 美元,有没有办法更有效地生成 zip 文件,所以我不需要扩大服务器规模?使用多个命令而不是使用 将 zip 文件的创建拆分为创建和添加文件步骤是否有帮助CreateFromDirectory(...)
?
其他信息:
- 除了我之外,这个端点没有被任何人击中
- 我可以尝试创建多个较小的 zip 文件,看看这是否有助于资源消耗,但这对我的用例来说并不理想。
- 这不是这台服务器上运行的唯一东西,这就是为什么它已经扩大了这么多
- 澄清一下,zip 文件确实是在服务器上创建的,我可以看到在响应返回给用户之前记录的日志条目,我可以在 kudu 中看到 zip 文件。但 Azure 出于某种原因截获了 200 API 响应并改为发送 503。
解决方案
推荐阅读
- python - Plotly:将数据框列中的特定聚类标签绘制为标记
- javascript - iOS 设备上的日期格式问题(vanilla JS)
- python - Dataframe - Pandas - 减去列的结果是错误的?
- c++ - 如何在 EC2 实例上部署我的 REST API
- python - Zlib 从 websocket 解压数据
- c++ - 无法获得 std::vector 的大小
读取二进制文件后 - c# - 如何在 WS2007FederationBinding 中指定发行者地址?
- regex - 正则表达式运算符和 grep -E 失败
- python - 如果值为真,则附加到 Python 中的新列表
- symfony - 如何在 Symfony 5 中递归地对数组进行非规范化?