ASP.Net应用程序随着时间的推移变慢

时间:2012-03-07 17:38:10

标签: asp.net performance session-state

我们使用ASP.net 2.0编写的遗留Web应用程序的用户在使用该应用程序一段时间后(2小时左右)后速度会变慢。 例如,单击执行某些计算并更新ajax updatepanel的按钮需要几秒钟,而刚刚登录时几乎是即时。

如果他们注销并重新登录Web应用程序,则每次执行时都会再次恢复正常速度。减速是针对特定用户而非全局的。它可以为用户快速而对他旁边的用户来说很慢。

我看过IIS服务器,里面有足够的可用内存,CPU几乎总是低于10%。 目前只有十几个用户使用此Web应用程序,因此可扩展性不应成为问题。

唯一可以认为受到注销影响的是会话状态。 我已经看过ViewState了,它是“仅”18kb,速度最慢,不应该是瓶颈,特别是因为它们位于相同的千兆局域网而不是远程。当应用程序快速运行时,它不会更小。 查看代码中的会话状态,它没有被大量使用,也没有存储大对象。 根据我的测试,几分钟后它不会超过10个项目和500个字节。 即使有泄漏,服务器也应该能够考虑它的内存量(4GB但只使用300MB)来应对它。

我已经清除了临时文件,但它似乎没有任何显着差异。

您是否认为这些减速可能来自会话状态以外的其他内容,请记住注销并重新启动会使速度恢复正常? 如果没有,是否有任何工具可以建议配置会话状态或IIS中的设置我应该尝试更改?

3 个答案:

答案 0 :(得分:1)

当浏览器的内存使用速度减慢时,它们在客户端计算机上的用途是什么样的?如果你使用了大量的ajax并且浏览器的内存使用不断攀升,那么你的javascript可能会出现内存泄漏。

答案 1 :(得分:1)

您检查了数据库吗? (我假设您使用ajax应用程序消耗了一些数据)

如果你没有关闭Finally块中的连接,你可以结束使app慢下来的僵尸数据库连接。我不知道这是否是根本原因,但可能值得一看。

答案 2 :(得分:1)

如果这是一个AJAX重页&用户停留在同一页面上(即很多回发本身),那么它可能只是ViewState变大。而你所经历的减速是由于PageSize。

我会尝试在本地重新创建体验。用Firebug / Fiddler之类的东西监控页面大小/流量。如果它是ViewState /页面大小问题,您可以查看将ViewState移动到服务器端

有关详细信息,请参阅以下内容。

http://professionalaspnet.com/archive/2006/12/09/Move-the-ViewState-to-Session-and-eliminate-page-bloat.aspx