![SQL/IIS(传统 ASP)Web 应用程序性能优化](https://linux22.com/image/484114/SQL%2FIIS%EF%BC%88%E4%BC%A0%E7%BB%9F%20ASP%EF%BC%89Web%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.png)
我们有一个经典的 ASP Web 应用程序,由第三方托管提供商 (Rackspace) 托管。我们在 SQL 服务器上有大约 100 个数据库,在 Web 服务器 (IIS) 上有大约相同数量的网站。有人有什么优化性能的技巧吗?我们偶尔会在一天中看到内存和 CPU 峰值。我们设置了一个简单的 SQL 服务器和 Web 服务器对。
答案1
这不是一个简单的问题,也没有简单的答案。关于性能优化的书籍已经有很多了。
也许可以尝试从这些文章开始,这些文章(在第一部分)深入探讨如何发现性能问题。 http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-1/
我还可以推荐一本书。Grant Fritchey 和 Sajal Dam 合著的《SQL 2008 性能调优精粹》。
如果您能找到性能最差的查询,请在此处或好的 SQL 论坛上发布它们,一定会有人帮助您。事实上,这个问题太广泛了,无法给出简单的答案。
答案2
在 SQL 方面,使用 SQL Profiler 来识别运行时间较长的查询或存储过程可能是一个好主意。如果您能在这里识别出任何真正的问题,它可以帮助加快您的应用程序。
请记住,Profiler 工具通常需要进行大量过滤才能获得正确的信息。它的优点在于,您可以记录正在运行的查询的开始时间,并尝试将其与您的 CPU 峰值时间进行匹配。
答案3
我猜你需要做一些分析。从总体上讲,你需要知道瓶颈在哪里,因此典型的 Windows 性能监控指南适用。绘制 CPU(利用率百分比、用户模式与内核模式百分比、上下文切换)、磁盘(队列长度、磁盘时间百分比)和内存(页面错误/秒、工作集大小)的总体性能图表。你需要开始缩小范围,看看哪些进程(IIS WAM、SQL Server 等)给你带来了麻烦。
就像其他发帖者所说的那样——如果这是您正在运行的 SQL 查询,那么这可能是数据库优化问题。但是,不要忽视您的脚本正在执行愚蠢的查询(SELECT * 并过滤脚本中的结果等)的可能性,这些查询会导致异常的数据库负载。
如果您深入研究单个脚本(即,您发现瓶颈指向 IIS / WAM 进程),那么请查看此 Stackoverflow 问题:https://stackoverflow.com/questions/398028/performance-testing-for-classic-asp-pages 其中有一个代码片段,是一个基本的执行计时器。尽管存在进一步影响性能的风险,但为了获得更多可见性,您还可以考虑将传入的参数和脚本的执行时间记录到数据库中。在这些数据中寻找异常值可能有助于您找到脚本中的边界条件。理想情况下,您希望从一开始就考虑分析,而改造可能很困难。