我正在对 .NET Web 应用程序进行压力测试。我这样做有两个原因:我想看看现实条件下的性能如何,并确保我们在测试过程中没有遗漏任何问题。我们有 30 个并发用户在应用程序中使用它,就像他们在正常工作过程中一样。大多数用户打开了应用程序的多个窗口。

  • 10 位用户:不错
  • 20 位用户:慢下来
  • 30 位用户:非常非常慢但没有超时

它已加载到生产服务器上。它是一个虚拟服务器,配备 2.66GHz Xeon 处理器和 2 GB RAM。我们使用的是Win2K3 SP2。我们已加载 .NET 1.1 和 2.0,并使用 SQLExpress SP1。

我们事后重新检查了所有表上的索引,它们都是应有的样子。

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

有帮助吗?

解决方案

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

其他提示

  1. 您可能会遇到并发问题,具体取决于应用程序的运行方式。尝试使用“nolock”关键字执行读取。

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

  3. 如果您还没有这样做,请移至 SPROC,这允许 MSSQL 更好地为给定查询的正常结果集索引数据。

  4. 尝试遵循存储过程的执行计划,以确保它们使用您认为的索引。

  5. 对数据库运行跟踪以查看传入请求的情况。您可能会注意到某个特定的 SPROC 正在一遍又一遍地运行:如果可能的话,通常是在客户端缓存响应的好兆头。(查找列表等)

更新:看起来 SQL Server Express 不是问题,因为他们在应用程序的早期版本中使用相同的产品。我认为下一步是确定瓶颈。如果您确定它位于数据库层,我建议您进行分析器跟踪并缩短最昂贵查询的执行时间。

这是我用于从 SQL Server 动态管理视图 (DMV) 和相关动态管理函数 (DMF) 收集统计信息的另一个链接。不确定是否可以在 Express 版本中使用。发现隐藏数据以优化应用程序性能.


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

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

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

更新:按照 Gulzar 的建议,转移到单独的主轴或升级 SQL Server 版本。

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

运行 SQL Profiler 以查看发送到数据库的查询。查找以下查询:

  • 返回太多数据
  • 建造得很差
  • 被执行太多次
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top