在 iis 7.5 中设置物理内存限制是否会导致垃圾收集器更积极地运行?
我目前正在对 64 位 2008 服务器(iis 7.5)上托管的 ASP.NET 4.0 Web 应用程序进行负载测试。
负载测试的目的是确定每个页面同时缓存时 Web 应用程序的最大内存使用量。
为了评估这一点,我将页面的输出缓存持续时间设置为 900 秒,然后通过 xenu link sluth 请求每个可公开访问的 URL。这实际上请求了 20,000 个左右的页面。
为了监视内存使用情况,我使用了 Windows 性能监视器和 Redgate 内存分析器 7.0。
我已经运行了两次测试,测试 1 将物理内存限制设置为默认 0,测试 2 将物理内存限制设置为 921600 (900mb)。
这是我观察到的,
- 在这两个测试中,应用程序池从未被回收。
- 在测试 1 中,工作进程内存使用量增长到 1,300mb。 (高于测试 2 的内存限制)
- 在测试 2 中,内存使用量增长到 720mb。
- 在测试 2 中,内存使用量增长到 720mb。
- 在测试 1 中,分配给 .Net 的未使用内存增长到 700mb,
- 在测试 2 中,分配给 .Net 的未使用内存增长到 150mb。
这引出了我的问题,在 iis 7.5 中设置物理内存限制是否会导致垃圾收集器更积极地运行?
如果情况并非如此,我所目睹的是什么?
I am currently undertaking load testing of a asp.net 4.0 web application hosted on a 64bit 2008 server (iis 7.5).
The purpose of the load testing it to determine the maximum memory usage by the web application if every page is cached simultaneously.
To evaluate this I set the output cache duration of the pages to 900 seconds then I request each publicly accessible url via xenu link sluth. This effectively request 20,000 or so pages.
To monitor memory usage I am using both Windows performance monitor and Redgate memory profiler 7.0.
I have run the test twice, test 1 with the physical memory limit set to the default 0, and test 2 with the physical memory limit set to 921600 (900mb).
Here is what I have observed,
- In both tests the application pool is never recycled.
- In test 1, the worker process memory usage grows to 1,300mb. (Above the memory limit of test 2)
- In test 2, memory usage grows to 720mb.
- In test 2, memory usage grows to 720mb.
- In test 1, the unused memory allocated to .Net grows to 700mb
- In test 2 it grows to 150mb.
This leads me to my question, does setting the physical memory limit in iis 7.5 cause the garbage collector to operate more aggressively?
If this is not the case what am I witnessing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
要真正确定是否正在触发垃圾收集,您可以观察其上的性能计数器。
至少我会观察 Gen 0 计数器并比较这两种情况。
http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx
To truly find if garbage collection is being triggered, you could watch the perf counters on it.
At a minimum I'd watch the Gen 0 counter and compare the two scenarios.
http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx