SQL 服务器性能下降 - 高延迟 writes/sec 和空闲列表 stalls/sec

SQL Server Performance Degradation - High Lazy writes/sec and free list stalls/sec

我正在为我们的一位客户提供支持,该客户拥有我们 Web 应用程序的企业版,该应用程序运行在他们所在位置的虚拟服务器上。他们有 3 个 Web 服务器和 1 个数据库服务器。所有 4 台服务器都使用 vCenter 进行了虚拟化,并安装了 Windows Server 2008 R2。

数据库服务器是 运行ning SQL Server 2008 R2,具有 36 GB RAM,以及用于数据库、日志、备份等的独立驱动器(总共 7 个虚拟) SAS 设置,尽管备份发生在 SSD 驱动器上。

Web 服务器各有 4 GB RAM 且负载平衡。我们有一些流程可以将第三方的数据导入到我们的最终用户应用程序中,但最近其中一个流程在服务器上出现瓶颈并导致出现问题。一个 应该 需要几个小时的过程需要几天,而且经常会失败,所以我必须手动将过程排队 SQL 并让它 运行。

经过大量调查,我不知道这是什么问题。我已经确认所有 Web 应用程序设置都与我们的托管环境相同,托管环境容纳的客户比这大得多,我们的数据库服务器更健壮,但服务器的整体负载很大。

我包含的一些指标让我担心服务器上实际发生的进程。我在下面包含了这些,但我特别担心 Lazy writes/sec 和空闲列表 stalls/sec,对我来说,这表明该进程正在使内存中的服务器超载并将页面转储到硬盘,这会降低性能。这个对吗?谁能告诉我从这里去哪里的想法?客户肯定不喜欢向数据库服务器添加更多资源的想法,所以我希望能够明确地证明问题出在哪里。

由于这是在虚拟化环境中,是否也可能只是恰好共享了资源,从而降低了 VM 的性能并导致将其刷新到驱动器?任何帮助将不胜感激。我的硬件经验已达到极限,而且我不是 DBA,因此我试图了解 SQL 服务器在后台实际发生的一切。

谢谢!

Buffer cache hit ratio           1363657/sec
Buffer cache hit ratio base      1363687/sec
Page lookups/sec                 28043473454/sec
Free list stalls/sec             621/sec
Free pages                       1438/sec
Total pages                      3932160/sec
Target pages                     3932160/sec
Database pages                   3846600/sec
Reserved pages                   0/sec
Stolen pages                     84122/sec
Lazy writes/sec                  77354/sec
Readahead pages/sec              15305687/sec
Page reads/sec                   16859120/sec
Page writes/sec                  7751703/sec
Checkpoint pages/sec             5408194/sec
AWE lookup maps/sec              0/sec
AWE stolen maps/sec              0/sec
AWE write maps/sec               0/sec
AWE unmap calls/sec              0/sec
AWE unmap pages/sec              0/sec
Page life expectancy             16434/sec

本质上,内存膨胀和共享内存/磁盘是这里的问题。我看不到 VMWare 主机,但它被用来扩展和使用影响机器性能的资源。我将答案链接到 DBA 堆栈交换,帮助我在评论中识别问题。