编码以改进IIS应用程序池内存使用

时间:2012-12-11 20:10:32

标签: c# asp.net iis webforms

我们有两个相同的负载平衡网络服务器(ws1和ws2)服务于同一个网站。目前它们都有一些爬虫,抓取像PDF和包含大量图像的页面(可能是25页/平均页面)。两台服务器之间有大约60个并发用户,但爬虫到目前为止的请求最多。 ws1上的IIS应用程序池消耗大约500mb RAM,而ws2上的应用程序池消耗~2GB RAM(每台服务器上可用4gb)。这些消费水平持续了几个小时。我已经将IIS配置为执行静态缓存和静态压缩,但我认为这不会影响RAM消耗。

问题在于ws2的RAM几乎已经达到最大值,并且该服务器上的网页加载速度比ws1慢得多,这对我们的最终用户来说并不好。

我的问题:

  • 50%的可用内存(ws2上约2GB)对于应用程序池来说似乎很多 - 是吗?
  • 我是否有任何编程/配置注意事项,以帮助服务器更好地管理其资源,特别是RAM,尤其是在涉及PDF和图像等更大的请求时?

我知道这点非常通用。我不知道其他哪些信息会对您有所帮助,所以请留下反馈,以便我可以更详细地更新这个问题。

1 个答案:

答案 0 :(得分:0)

最好的出发点是确定 正在使用所有内存。像

这样的商业剖析师

http://www.red-gate.com/products/ants_performance_profiler/index.htm

http://www.jetbrains.com/profiler/

可以分析在IIS中运行的代码。如果您可以在开发环境中重现该问题,Visual Studio的内存分析器也应该能够诊断内存使用情况(可能有一种方法可以独立地对生产IIS实例使用它...不确定)。

检查您的应用程序分配了哪些内存,以及用于什么内容。