是什么原因导致计数器页面故障/秒和缓存故障/秒的值非常高?
计数器页面数/秒几乎为零。在零附近,偶尔会在一秒钟内颠簸到300。平均值约为10 (随着时间的推移)。
高速缓存故障/秒在2-e秒内为0,然后在2-3秒内升至约10000。这一过程一直在重复。
每秒的页面读取数较低,约为0-20。
页面错误/秒的平均值为25000,偶尔会出现高达80000的颠簸。
在web应用程序中,我应该从哪里开始查找?
发布于 2012-08-21 15:08:13
潜在的问题是由于GC必须处理大量的字符串。
例如,我们有相当多的字符串转换来自数据层datareader"column".ToString()
这被替换为
(字符串) datareader"column".Tostring(),它有很大的帮助。
另一个问题是,我们在asp.net缓存中缓存了大量相同的字符串。我们对此进行了优化,以便只缓存对列表的引用,在该列表中,字符串只存储一次。我们还优化了缓存,以便缓存将在.net缓存中的所有机器上重用的内容,以及只会重用但可能不会在我们在另一台服务器上序列化缓存的同一服务器上的内容,因此该服务器不会保留引用,因此会释放,以便GC可以释放内存。
发布于 2011-05-03 03:58:46
如果您谈论的是asp.net页面错误,那么请查看windows服务器日志,以及您可能需要确定发生了什么的任何日志。您应该会看到很多.net错误。
如果您谈论的是内存页面错误和缓存错误,那么这可能是正常行为。内存页面错误很常见,基本上是硬件中将数据从虚拟内存转移到物理内存的信号。请参阅http://en.wikipedia.org/wiki/Page_fault
减少内存分页错误的最好方法是增加机器中可用的物理RAM的数量。
您可能还想阅读:http://blogs.technet.com/b/askperf/archive/2008/06/10/the-basics-of-page-faults.aspx
https://stackoverflow.com/questions/5861219
复制相似问题