我们使用ASP.net 2.0编写的遗留Web应用程序的用户在使用该应用程序一段时间后(2小时左右)后速度会变慢。 例如,单击执行某些计算并更新ajax updatepanel的按钮需要几秒钟,而刚刚登录时几乎是即时。
如果他们注销并重新登录Web应用程序,则每次执行时都会再次恢复正常速度。减速是针对特定用户而非全局的。它可以为用户快速而对他旁边的用户来说很慢。
我看过IIS服务器,里面有足够的可用内存,CPU几乎总是低于10%。 目前只有十几个用户使用此Web应用程序,因此可扩展性不应成为问题。
唯一可以认为受到注销影响的是会话状态。 我已经看过ViewState了,它是“仅”18kb,速度最慢,不应该是瓶颈,特别是因为它们位于相同的千兆局域网而不是远程。当应用程序快速运行时,它不会更小。 查看代码中的会话状态,它没有被大量使用,也没有存储大对象。 根据我的测试,几分钟后它不会超过10个项目和500个字节。 即使有泄漏,服务器也应该能够考虑它的内存量(4GB但只使用300MB)来应对它。
我已经清除了临时文件,但它似乎没有任何显着差异。
您是否认为这些减速可能来自会话状态以外的其他内容,请记住注销并重新启动会使速度恢复正常? 如果没有,是否有任何工具可以建议配置会话状态或IIS中的设置我应该尝试更改?
答案 0 :(得分:1)
当浏览器的内存使用速度减慢时,它们在客户端计算机上的用途是什么样的?如果你使用了大量的ajax并且浏览器的内存使用不断攀升,那么你的javascript可能会出现内存泄漏。
答案 1 :(得分:1)
您检查了数据库吗? (我假设您使用ajax应用程序消耗了一些数据)
如果你没有关闭Finally块中的连接,你可以结束使app慢下来的僵尸数据库连接。我不知道这是否是根本原因,但可能值得一看。
答案 2 :(得分:1)
如果这是一个AJAX重页&用户停留在同一页面上(即很多回发本身),那么它可能只是ViewState变大。而你所经历的减速是由于PageSize。
我会尝试在本地重新创建体验。用Firebug / Fiddler之类的东西监控页面大小/流量。如果它是ViewState /页面大小问题,您可以查看将ViewState移动到服务器端
有关详细信息,请参阅以下内容。