什么可能导致计数器页面错误/秒和缓存错误/秒的非常高的值?
计数器页数/秒几乎为零。大约零,偶尔会在一秒钟内碰到300。平均约10(随着时间的推移)。
缓存故障/秒为2-e秒为零,然后提高到大约10000秒为2-3秒。这一直在重复。
页读/秒低约0-20。
页面错误/秒的平均值为25000,偶尔也会突破80000。
我应该从Web应用程序的哪个位置开始寻找?
答案 0 :(得分:2)
潜在的问题是由于GC必须处理的很多字符串。
例如,我们从数据层进行了大量的字符串转换 DataReader的[ “列”]。的ToString()
这被替换为
(string)datareader [“column”] .Tostring()并且它帮助了很多。
另一个问题是我们在asp.net缓存中缓存了很多相同的字符串。 我们对此进行了优化,仅将引用缓存到只存储一次字符串的列表。 我们还优化了缓存,以便缓存将在.net缓存中的所有计算机上重用的内容以及只能重用但不能在我们缓存在另一台服务器上进行序列化的同一服务器上的内容,因此不会保留引用因此可以释放,因此GC可以释放内存。
答案 1 :(得分:1)
如果您正在讨论asp.net页面错误,请查看Windows服务器日志以及您可能需要的任何日志来确定发生了什么。你应该看到很多.net错误。
如果您正在谈论MEMORY页面错误和缓存故障,那么这可能是正常行为。内存页面错误很常见,基本上是硬件中的信号,用于将数据从虚拟内存转移到物理内存。见http://en.wikipedia.org/wiki/Page_fault
降低内存页面错误的最佳方法是增加机器中可用的物理RAM量。
您可能还想阅读:http://blogs.technet.com/b/askperf/archive/2008/06/10/the-basics-of-page-faults.aspx