我们有一个经典的 ASP Web 应用程序,我们通过第 3 方托管服务提供商 (Rackspace) 托管该应用程序。我们在 SQL 服务器上有大约 100 个数据库,在 Web 服务器 (IIS) 上有大约相同数量的网站。有没有人有任何优化性能的技巧。我们偶尔会在一天中看到内存和 CPU 峰值。我们设置了一个简单的 SQL 服务器和 Web 服务器对。
我们有一个经典的 ASP Web 应用程序,我们通过第 3 方托管服务提供商 (Rackspace) 托管该应用程序。我们在 SQL 服务器上有大约 100 个数据库,在 Web 服务器 (IIS) 上有大约相同数量的网站。有没有人有任何优化性能的技巧。我们偶尔会在一天中看到内存和 CPU 峰值。我们设置了一个简单的 SQL 服务器和 Web 服务器对。
在 SQL 方面,使用 SQL Profiler 来识别需要很长时间运行的任何查询或存储过程可能是一个好主意。如果您可以在这里发现任何真正的问题,它可以帮助您加快申请速度。
请记住,Profiler 工具通常需要进行大量过滤才能获得正确的信息。很好的是,您可以记录正在运行的查询的开始时间,并尝试将它们与您的 CPU 峰值时间相匹配。
这不是一个简单的问题,也没有简单的答案。整本书都是关于性能优化的。
也许尝试从这些文章开始(在第一部分中)发现性能问题。 http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-1/
http://www.simple-talk.com/sql/performance/finding-the-causes-of-poor-performance-in-sql-server,-part-2/
我也可以推荐一本书。Grant Fritchey 和 Sajal Dam 的“SQL 2008 性能调优提炼”。
如果您能找到性能最差的查询,请将它们发布在这里或一个好的 SQL 论坛上,肯定会有人帮助您。事实上,这个问题太宽泛了,没有一个简单的答案。
我怀疑你需要做一些分析。在总体层面上,您需要知道瓶颈在哪里,因此适用典型的 Windows 性能监控指南。图表 CPU(利用率百分比、用户模式与内核模式百分比、上下文切换)、磁盘(队列长度、磁盘时间百分比)和内存(页面错误/秒、工作集大小)的总体性能。您需要开始将范围缩小到哪些进程(IIS WAM、SQL Server 等)给您带来痛苦。
就像其他海报所说的那样——如果是你正在运行的 SQL 查询,那么它可能是一个数据库优化问题。但是,不要忽视您的脚本正在执行导致异常数据库负载的愚蠢查询(SELECT * 和过滤脚本中的结果等)的可能性。
如果您深入了解单个脚本(即您发现瓶颈指向 IIS / WAM 进程),请查看此 Stackoverflow 问题:https ://stackoverflow.com/questions/398028/performance-testing-for- classic-asp-pages 里面有一个代码片段,它是一个基本的执行计时器。冒着进一步影响性能的风险,但为了获得更多可见性,您还可以考虑将传入的参数和脚本的执行时间记录到数据库中。在该数据中查找异常值可能有助于您在脚本中找到边缘条件。理想情况下,您希望从一开始就考虑到分析,而改造可能会很困难。