我们在英国和澳大利亚都安装了两台 Web 服务器和一台 DB 服务器。这些服务器来自 Rackspace,在两种情况下,Web 服务器都通过私有 IP 连接到 DB 服务器。每个地区各自的 Web 服务器上的同一个网站连接到各自的区域 DB 服务器似乎会产生非常不同的性能
澳大利亚服务器上相应的 Web 服务器和数据库服务器之间的任何交互似乎都比英国服务器上慢得多。这显然是通过在各自位置的浏览器中触发操作来实现的。
澳大利亚的数据库服务器略有不同,它的处理器更快,内存更大。我是一名 .NET 开发人员,所以我不太清楚如何确定问题所在。我该如何确定这里发生了什么,并尝试找出为什么澳大利亚一侧的数据库访问速度似乎比英国一侧慢得多?
还有一个区别,澳大利亚数据库服务器正在为一个经典 asp 页面运行 IIS,该页面从旧的经典 asp 站点加载/上传资源。这似乎没有占用太多内存或 CPU 能力,而且很少使用,所以我看不出这可能是问题所在。我真正想要的是一种从 Web 服务器查看进程中减速/时间发生在哪里的方法。最好的方法是什么?
编辑 - 我注意到,在 SQL 探查器中,澳大利亚数据库上的相同事件似乎会触发更长的审计注销持续时间。据我所知,这仅意味着登录 SQL 服务器期间发生的事件需要更长的时间。我不确定是否能从中确定其他任何事情。
答案1
如果您遇到这种情况,我会首先做以下事情:
- 下载并运行闪电战Brent Ozar 的诊断脚本。特别注意高优先级项目,但一定要查看整个报告。
- 我会仔细检查每台服务器上分配给 SQL 的 RAM 数量。默认情况下,SQL 的 RAM 分配是无限的。内存限制最多应比系统的总 RAM 少 4GB。并且这些服务器上运行的其他程序越多,SQL 的最大内存和系统安装量之间的差距就越大。这里的目标是确保操作系统不会缺少 RAM 来支持计算机要求的任务。如果 RAM 不足,操作系统就无法有效地在硬件和 SQL 之间进行交互。
- 下载微软系统内部套件然后启动 Process Explorer。使用其资源监视器(尤其是磁盘 I/O)查找性能瓶颈。
- 同样,从 Sysinternals Suite 中,使用 TCPView 检查您的数据库服务器有多少个活动连接。如果数量达到数百个,您可能需要注意这是为什么,并确保没有出现任何问题。
- 最后,在对简单内容进行双重检查之后,启动 SQL 事件探查器并开始查找慢查询和其他问题。https://www.red-gate.com/simple-talk/sql/performance/how-to-identify-slow-running-queries-with-sql-profiler/