2011-06-21 48 views
1

我们正在运行一个ASP.NET应用程序,现在我们的流量增加了很多,导致用户响应速度慢。我们已经优化了应用程序和数据库,但仍未达到预期的响应时间。我们尝试了ASP.NET缓存,但它也没有帮助。我可以尝试的其他选择是什么?我正在寻找一种可扩展的解决方案,以便在将来能够处理更多的流量。性能问题

+1

移动到多个服务器? –

+1

您是否认为您的Web服务器硬件资源与请求数量相关?如果您从Web服务器硬件资源的最佳功能获得预期输出,这可能也很重要。例如:额外的RAM可能是一个很好的选择,如何使用性能计数器等事先做过研究 – DSharper

回答

3

如果问题是您的数据库 - 那么你需要优化更好,更优的硬件,DBA分析等

如果问题是你需要配置文件,并找出究竟其中一个缓慢的Web应用程序缓慢发生。这里的问题很模糊。下载ANTS配置文件或写你自己的跟踪输出(蚂蚁更容易恕我直言),看看你的应用程序放缓。这是因为会话锁,数据库,linq查询执行时间和时间(例如调用query.Count()将每次重新执行查询)等等等

检查您的viewstate大小 - 使用工具fiddler调查页面大小,第一个字节的时间等。

这是一个模糊的问题,但这些是一些基本的项目。

我们需要更多的信息,但这应该让你开始。

+0

“升级”的答案不告诉我们在哪里或什么。您的驱动器是否针对读取的簇大小进行了优化您的文件组是否为读/写等进行了优化。但是,你提到你正在将会话存储在sql server中。那么现在就会发生这种情况,因为潜在每个请求都有数据库开销。状态服务器应该有点帮助:http://www.codeproject.com/KB/aspnet/p2pstateserver.aspx所以如果没有,那么你的问题可能在别处。为什么不禁用某些控件的viewstate并将缓存中的数据重新绑定,例如作为测试(或一起禁用) –

0

我想问候的@AdamTuliper的答案强调的ViewState的

你可能有很多是逐渐加入庞大的数据GridView的的。 考虑如果不需要,关闭ViewState。含义:如果用户不与gridview交互(通过选择一行,更新等),那么不需要网格视图在服务器和客户端之间来回切换。

但是,如果情况并非如此,那么我们需要更多信息才能提供帮助。

+0

我们已经将硬件升级到了最新技术。我们将会话存储在MSSQL服务器中,我认为第一个瓶颈是SQL Server,因为它似乎不具备可扩展性。 我们已经对SQL服务器进行了一些测试,当用户数超过15000时会出现问题。我们已经尝试会话状态服务器,但它并没有帮助 我们的应用程序的一部分大量使用ViewState,我们正在努力减少VS的大小,但这是我们可以做的事情。我们正在尝试编写一个自定义VS商店,我们将把大型VS保留在本地缓存中,而不是保留在ASP.NET响应中。 – Ravian

1

Asp.net缓存本身有一些限制和性能问题。它不会使应用程序具有可伸缩性,因为它在本质上处于进程中。但是,如果可扩展性是您主要关心的问题,那么您需要实现分布式缓存。分布式缓存可以使应用程序高度可扩展。基本上,内存中分布式缓存是一种缓存形式,它允许缓存跨越多个服务器,以使其可以扩大规模并提高事务处理能力。由于其架构,它也是一个非常可扩展的平台。它分布在多个服务器上,但仍然可以为您提供单个缓存的逻辑视图。我宁愿代表我的经验建议你NCache。欲了解更多详情,请阅读本文 “improve asp.net app performance and scalability”。它会很好地帮助你。

+0

感谢Nelly,我们已经在评估NCache和其他第三方缓存提供商。 – Ravian