我有一个单租户ASP.NET web应用程序,它部署在Windows2008R2 web服务器上,而DB部署在另一台服务器上。
我的应用程序使用了至少20个第三方DLL,这些DLL的总大小约为150MB。假设我们有20个客户站点在IIS中运行,这些20+ DLL在每个单独的IIS进程中加载时会占用大量内存空间。我的问题:
站点加载时间非常慢:全新的客户单租户安装大约需要3-5分钟来加载主页。我假设在内存空间中加载所有这些DLL需要花费很多时间。
RAM占用:我的RAM正在被疯狂地耗尽,随着我们的扩展(获得更多的客户安装),宝贵的内存空间将被这些相同的DLL耗尽。这些第三方DLL在未来不会有太大变化(不会升级)。
因此,考虑到这些条件,我应该继续在GAC中安装这些程序集吗?根据我所读到的,我发现开发人员出于各种原因(我确实理解)建议我不要使用GAC,但我仍然认为,根据我的条件,在GAC中安装这些程序集不仅可以显著缩短我的加载时间,还可以节省宝贵的RAM。
任何输入都是很好的。
请注意,我已经使用ANTS和dotTrace分析了应用程序的性能,并且没有明显的瓶颈会导致应用程序在第一次点击时加载速度变慢。还要注意,在第一次命中之后,应用程序的性能是可以接受的。它在3秒内加载所有页面,但第一次命中需要3-5分钟。
发布于 2015-06-06 03:40:28
即使从GAC加载程序集,内存占用也是相同的,因为每个应用程序都会在自己的内存空间中加载自己的DLL副本。
我建议在你的网站上开始一次初始点击,作为后台进程,同时在前台向客户展示一些重要或有用的信息,这样用户体验就不会在第一次点击时受到阻碍。
https://stackoverflow.com/questions/30669873
复制相似问题