【发布时间】:2011-10-13 09:04:39
【问题描述】:
我创建了一个 MVC.Net 应用程序,并且有一个下载页面,用户可以从中下载大约 5MB 大小的安装文件。当我们点击下载按钮时,这个设置文件是动态生成的。此设置文件的每次动态生成都会增加 7% 的服务器 CPU 使用率。 假设用户数量增加至少 100 并且所有用户都将尝试下载文件,那么 CPU 使用率将增加到 100%,这将导致服务器停机或无响应。
为了克服这种情况,我们试图通过代码在逻辑上限制一次总共 5 次下载。这意味着一次可以有 5 个用户下载文件,第 6 个以后的用户将排队,直到前 5 个下载未完成。此外,我们必须向排队的用户显示“您的下载将在 28 秒后开始”左右的等待时间。
任何关于如何实现这一目标的建议都将受到高度赞赏。
问候, 海达尔
【问题讨论】:
-
可能有多少个不同版本的设置?您是否总是需要动态生成它?
-
版本将针对每个用户,这需要动态生成。
-
您不能注册一个异步方法或服务来将这些文件分发排队 - 然后在准备好时向用户发送电子邮件链接以下载文件?我想你可以有一个服务,在 24-48 小时后删除生成的文件。
标签: jquery asp.net sql-server asp.net-mvc