在Web服务器上压缩大文件导致大量减速

时间:2014-02-19 10:34:23

标签: asp.net

我们有一个基于ASP.NET的标准网页,您可以通过单击“下载所有文件”按钮下载多个上传的文件 当你这样做时,我们压缩服务器上的所有文件,然后你知道下载它。经验与skydrive等非常相似 如果其中一个要压缩的文件很大(通过演出),那么服务器上的CPU利用率就会非常高。有三个,四个客户端尝试和同一时间,Web服务器一般变得没有响应。

有些事情,为了好玩,我尝试在我的本地盒子上压缩文件(文件大小超过了一个gig)。我的机器刚抓取CPU util就像80%。

那么解决方案是什么,每个人和他们的弟弟都允许你从网上下载压缩文件,我们做错了什么,是否有一些标准的聪明方式在服务器上压缩文件而不会造成大幅减速。

1 个答案:

答案 0 :(得分:0)

为了避免其他用户的速度减慢,您可以限制并行完成的zip运行次数,例如:通过使用信号量。有关示例,请参阅此link

缺点是,如果有多个并行运行,则压缩运行会延迟 - 但至少服务器应该对其他用户保持响应。

如果您可以预测用户想要下载的软件包,您还可以通过压缩文件进行准备并检索压缩文件,而无需动态删除它们。如果您可以缓存压缩文件,这也有效,因此只对想要拥有新组合的第一个用户执行压缩过程。当然,您需要跟踪文件的更改,以便您可以使缓存的zip文件无效。