![与 IIS 的孤立 SQL 记录集/连接](https://linux22.com/image/567142/%E4%B8%8E%20IIS%20%E7%9A%84%E5%AD%A4%E7%AB%8B%20SQL%20%E8%AE%B0%E5%BD%95%E9%9B%86%2F%E8%BF%9E%E6%8E%A5.png)
我有一个 IIS 6 网站,运行在 Windows 2003 Server x86 上,带有运行 ASP Classic 的 MS SQL2005 Enterprise 版本(别无选择)。该网站运行速度非常快,每小时大约有 8000 次页面浏览量。我的所有 SQL 表都已编入索引,我已使用分析器检查我的查询,其中最慢的查询仅约 10-15 毫秒。我已禁用自动收缩,将自动增长设置为 250mb,数据库为 2gb,有 800mb 的可用空间。
我的问题是,网站有时会无缘无故地变慢。只有简单的“连接到数据库并增加命中计数器”的页面可以正常工作,但通常执行时间约为 60 毫秒的 SQL 密集型页面需要 25,000 毫秒才能运行。这种情况持续约 30 秒,然后消失。由于我释放孤立记录集和连接的方式,我遇到了孤立记录集和连接的问题。我已经解决了这个问题,问题好多了,但我仍然收到它们。
有没有办法使用 permon 等来跟踪 SQL Server 或 Windows 何时关闭这些孤立连接?至少如果我可以监控问题,我就会知道我是否正在取得进展,或者我是否在看正确的东西。我还有什么可能遗漏的吗?
谢谢你!
答案1
性能监控确实很关键。但即使启用了一些性能监控,您也应该有一个 IIS 和 SQL 性能指标的基准,涵盖 CPU、磁盘、网络和 RAM。
Perfmon 可用于收集各种计数器以建立性能基线。一旦建立了此基线,您就可以使用它来识别瓶颈、峰值和意外问题。
您的 tempdb 可能正在增长。计划任务可能正在运行。Windows 页面文件可能正在调整大小。SQL 可能正在将 RAM 交换到磁盘。查询、更新、插入、删除可能出现瓶颈。
上述任何一件事,甚至更多的事情,都可能导致您所遇到的暂时的性能瓶颈。
我真的建议你看一下这些Brent Ozar 撰写的 SQL 性能调优文章和指南,一位出色的 SQL 大师/大师。
另一个非常方便的 SQL 监控工具是SQL监控器由 Red-Gate 开发,它封装了 Brent 引导您完成的许多手动流程,使其成为一种易于使用、可安装(虽然不是免费的)的产品。