3

我有一个在 Windows Server 2003 R2 上的 IIS 6 中运行的 ASP.Net 3.5 网站。它是一个相对较小的内部应用程序,在任何给定时间可能为少于十个用户提供服务。服务器有 4 Gig 的内存,并显示 3+ Gig 在站点处于活动状态时可用。

重新启动 Web 应用程序几分钟后,性能监视器显示有多达 4,294,967,293 个会话处于活动状态!我相当肯定这个数字是不正确的;在本次阅读时,该网站只有 100 个请求。

有没有其他人从 perf mon 经历过这种奇怪的行为?关于如何获得准确读数的任何想法?

更新:运行大约一个小时后,活动会话的数量减少了 4。所以它似乎确实在响应会话超时。

4

6 回答 6

9

嗯,2^32 = 4,294,967,296,所以听起来好像发生了某种溢出。不能确切地说为什么。

于 2008-12-19T16:29:53.583 回答
9

可能是溢出,但我的钱在下溢。我认为该程序以 0 人开始,有人注销,然后会话数变为负数。

于 2008-12-19T18:09:51.183 回答
8

我们有同样的问题。看起来 MS 有一个可用的修补程序:http: //support.microsoft.com/kb/969722

2009 年 9 月 10 日更新:我们的 IT 部门联系了 MS 以获取修补程序。它解决了我们的问题。如果重要的话,我们正在运行 .NET 2.0。

于 2009-06-23T22:16:59.723 回答
1

我也显示了一个很高的数字,目前是 4,294,967,268。

每次我放弃一个 Session,放弃的 Sessions 计数增加 1,而 Sessions Active 计数减少 1。目前我放弃的会话计数 = 16,所以这个数字可能从 4,294,967,84 开始。

有解决办法吗?

于 2009-05-29T17:16:21.727 回答
1

我的计数器工作正常,但有一天早上我远程登录到生产服务器,计数器在这个巨大的数字上(正如有人提到的非常接近 2^32 表示下溢)。但与前一天一切正常的唯一区别是,在夜间,Windows 安装了更新。因此,出于某种原因,这些更新导致了这个非常烦人的错误。

再观察一下计数器,我发现每当应用程序重新启动时——在没有流量的一段时间后,计数器就会正确地从零开始。当用户开始登录时,它会增加。当他们再次开始注销时,它仍然会逐渐减少,直到达到应该为零的值。到那时,它就变成了香蕉……

叹...

于 2009-09-01T12:10:52.003 回答
1

如果您必须使用现有的统计数据,我在 Excel 中打开了日志文件并使用了一个公式来带来更准确的值。我不能保证它的准确性,但结果看起来还不错:

如果 B2 是 (aspnet_wp)\Sessions Active value ,并且公式位于 C2

/* This one is quicker as it doesn't have to do the extra calculations */
=IF(B2>1073741824,4294967296-B2,B2)

或者

/* This one is clearer what is going on */
=IF(B2>power(2,30),(4*power(2,30))-B2,B2)

PS(我感到你的痛苦——我必须解释为什么他们有 42 亿个会话打开,而一秒钟前他们只有 0 个!)

于 2010-03-25T10:11:14.913 回答