SQL / IIS(传统ASP)Web应用程序性能优化

我们有一个经典的ASPnetworking应用程序,我们正在托pipe第三方托pipe服务提供商(Rackspace)。 我们在SQL服务器上有大约100个数据库,并且在Web服务器(IIS)上有相同数量的网站。 有没有人有任何提示性能优化。 我们偶尔会看到全天的内存和CPU峰值。 我们安装了一个简单的SQL服务器和Web服务器对。

这不是一个简单的问题,并没有一个简单的答案。 整本书都是关于性能优化的主题。

也许尝试从这些进入(在第一部分)发现性能问题的文章开始。 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/

我也可以build议一本书。 Grant Fritchey和Sajal Dam的“SQL 2008性能调优”。

如果你能发现查询的性能最差,请在这里或在一个好的SQL论坛上发布,有人肯定会帮助你。 事实上,这个问题太宽泛了,没有一个简单的答案。

在SQL方面,使用SQL事件探查器来识别任何需要很长时间运行的查询或存储过程可能是一个好主意。 如果你能在这里发现任何真正的问题,它可以帮助加快你的应用程序。

请记住,Profiler工具通常需要大量筛选才能获取正确的信息。 事实上,您可以logging正在运行的查询的开始时间,并尝试将它们与CPU峰值时间相匹配。

我怀疑你将需要做一些分析。 在总体水平上,您需要知道瓶颈在哪里,因此适用典型的Windows性能监控指南。 图表CPU总体性能(%利用率,%用户模式vs内核模式,上下文切换),磁盘(队列长度,磁盘时间百分比)和内存(页面错误/秒,工作集大小)。 你会开始缩小到哪些进程(IIS WAM,SQL Server等)给你带来的痛苦。

就像其他海报所说 – 如果是你正在运行的SQL查询,那么这可能是一个数据库优化问题。 不要忽略你的脚本执行exception的数据库加载的愚蠢的查询(SELECT *和过滤结果在脚本等)的可能性。

如果你陷入个人脚本(即你发现瓶颈指向IIS / WAM进程),那么看看这个Stackoverflow的问题: https : //stackoverflow.com/questions/398028/performance-testing-for-经典的ASP页面有一个代码片段是基本的执行计时器。 在进一步影响性能的风险中,为了获得更多的可见性,还可以考虑将传入的参数和脚本的执行时间logging到数据库中。 寻找数据中的exception值可能会帮助您find脚本中的边缘条件。 理想情况下,您希望从一开始就着眼于devise,而改造可能会很艰难。