2008-09-12 138 views
0

我正在测试.NET Web应用程序的压力。我这样做的原因有两个:我想看看真实世界中的性能如何,并确保我们在测试期间没有错过任何问题。我们在应用程序中使用了30个并发用户,就像他们在正常工作过程中那样。大多数用户有多个应用程序窗口打开。SqlServer Express性能低下

  • 10用户:不坏
  • 20用户:放慢
  • 30用户:非常,非常缓慢,但没有超时

它装载在生产服务器上。它是一台配备2.66G Hz Xeon处理器和2 GB RAM的虚拟服务器。我们正在使用Win2K3 SP2。我们加载了.NET 1.1和2.0并使用了SQLExpress SP1。

我们重新检查了所有表格后的索引,它们都是应该的。

我们应该如何提高应用程序的性能?

回答

2

这只是我想到的,但请检查一下当有20多个用户时,SQL Server使用多少内存--Express版本的局限之一是它是limited to 1GB of RAM。所以这可能只是一个简单的问题,由于Express的限制,服务器没有足够的可用内存。

2
  1. 根据应用程序的运行方式,您可能会遇到并发问题。尝试使用“nolock”关键字执行读取操作。

  2. 尝试为列添加表别名(并避免使用SELECT *),这有助于MSSQL,因为它不必“猜测”列的来源。

  3. 如果您尚未迁移到SPROC,则允许MSSQL更好地为给定查询的正常结果集编制索引数据。

  4. 请按照SPROCS的执行计划进行操作,确保它们使用的是您认为它们的索引。

  5. 对您的数据库运行跟踪来查看传入请求的样子。您可能会注意到特定的SPROC正在反复运行:如果可能,通常会将响应缓存在客户端上。 (查找列表等)

+0

我们非常meticilous与NOLOCK,我们使用视图来读取数据别名和SPROCS来处理CRUD以及SubSonic。 – 2008-09-12 14:19:02

+0

我不明白为什么这是被拒绝的。所有这些建议都是相关的 – rpetrich 2008-09-12 14:36:40

+0

我同意。即使这里不完全相关,它们也是有效的,并且可能对其他人有用。投票。 – 2008-09-12 14:38:20

0

更新:看起来像SQL Server Express的是没有问题的,因为他们在以前版本的应用程序中使用相同的产品。我认为你的下一步是找出瓶颈。如果您确定它在数据库层中,我会建议您使用Profiler跟踪并降低最昂贵查询的执行时间。

这是我用于从SQL Server动态管理视图(DMV)和相关的动态管理功能(DMF)收集统计信息的另一个链接。不确定我们是否可以在Express版本中使用。 Uncover Hidden Data to Optimize Application Performance


您是否将SQL Server Express用于Web应用程序?据我所知,它对生产部署有一些限制。

SQL Server Express是免费的,可以由ISV重新分配(以协议为准)。 SQL Server Express是非常适合学习和构建桌面和小型服务器应用程序。此版本是独立软件供应商,非专业开发人员和业余爱好者构建客户端应用程序的最佳选择。如果您需要更高级的数据库功能,则可以将SQL Server Express无缝升级到更复杂的SQL Server版本。

0

我会检查虚拟服务器上的磁盘性能。如果这是其中一个问题,我建议将数据库放在一个单独的主轴上。

更新:移动到单独的主轴或升级SQL Server版本,正如Gulzar恰当的建议。

0

确保您在检索数据后关闭连接。

0

运行SQL事件探查器查看发送到数据库的查询。寻找查询是:

  • 不佳构建

    • 返回了太多的数据
    • 正在执行的次数太多