【问题标题】:GAC query regarding slow initial load for an asp.net web siteGAC 关于asp.net 网站初始加载缓慢的查询
【发布时间】:2015-06-05 15:05:24
【问题描述】:

我有一个单租户 ASP.NET Web 应用程序,它部署在 Windows 2008R2 Web 服务器上,而 DB 在另一台服务器上。

我的应用程序使用至少 20 个 3rd 方 DLL,这些 DLL 的总大小约为 150MB。假设我们有 20 个客户站点在 IIS 中运行,这 20 多个 DLL 在每个单独的 IIS 进程中加载​​时会占用大量内存空间。我的问题:

网站加载时间非常慢:新客户单租户安装大约需要 3-5 分钟才能加载主页。我假设在内存空间中加载所有这些 DLL 需要花费很多时间。

RAM hogging:我的 RAM 正被疯狂地用完,随着我们扩展(获得更多客户安装),宝贵的内存空间将被这些相同的 DLL 用完。这些第 3 方 DLL 在未来不会有太大变化(没有升级)。

那么鉴于这些条件,我应该继续在 GAC 中安装这些程序集吗?根据我的阅读,我发现开发人员出于各种原因建议我反对 GAC(我确实理解),但我仍然觉得鉴于我的情况,在 GAC 中安装这些程序集不仅会显着改善我的加载时间,而且还可以节省宝贵的 RAM .

任何输入都会很棒。

请注意,我已经使用 ANTS 和 dotTrace 分析了应用程序的性能,并且没有明显的瓶颈会导致应用程序在第一次命中时加载如此缓慢。另请注意,应用程序性能在第一次命中后是可以接受的。它在 3 秒内加载所有页面,但第一次点击需要 3-5 分钟。

【问题讨论】:

  • 动态编译的网站预计首次加载速度较慢。如果您希望在实例之间共享 DLLS,是的,将它们命名为强名称并将它们粘贴到 gac 中。

标签: c# asp.net .net performance gac


【解决方案1】:

即使您从 GAC 加载程序集,内存占用量也会相同,因为每个应用程序都会在自己的内存空间中加载自己的 DLL 副本。

我建议在后台进程中开始对您的网站进行初始点击,同时在前台向客户显示一些重要或有用的信息,以免在第一次点击时影响用户体验。

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 2014-02-04
    • 1970-01-01
    • 2013-02-12
    • 2011-01-07
    • 2012-05-23
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多