我们有一个在 VMware 虚拟机中运行的 SQL Server 2016 SP1 实例。它包含 4 个数据库,每个数据库用于不同的应用程序。这些应用程序都在单独的虚拟服务器上。它们都没有在生产中使用。不过,测试应用程序的人报告了性能问题。
这些是服务器的统计信息:
用户通过基于 C++ 的 ERP 应用程序执行单屏幕访问。
当我ostress使用许多小查询或大查询对 Microsoft 的 SQL Server 进行压力测试时,我获得了最大性能。唯一的限制是客户端,因为他不能足够快地回答。
但是当几乎没有任何用户时,SQL Server 几乎不做任何事情。然而,人们必须永远等待才能在应用程序中保存任何内容。
根据 Paul Randal 的“告诉我它在哪里受到伤害”查询,所有等待事件中有 50% 是ASYNC_NETWORK_IO.
这可能意味着网络问题,或应用程序服务器或客户端的性能问题。他们甚至都没有以最大能力远程使用他们的资源。大多数情况下,所有机器(客户端、应用程序服务器、数据库服务器)上的 CPU 都在 26% 左右。
网络连接的延迟约为 1-3 毫秒。数据库服务器的 IO 在应用程序正常使用期间的最大写入速度为 20MB/s(平均为 7-9MB/s)。当我进行压力测试时,我的速度最高可达 5GB/s。
缓冲区缓存大小为我们的 ERP 系统 DB 为 60GB,我们的财务软件为 20GB,质量保证软件为 1GB,文档归档系统为 3GB。
我授予 …
这个问题基本上是这个问题的后续问题:
SQL Server 2016 的奇怪的性能问题
我们现在使用这个系统提高了效率。虽然自从我上一篇文章以来,另一个应用程序数据库被添加到这个 SQL Server 中。
这些是系统统计信息:
我们的系统现在存在重大的性能问题。非常高的 CPU 使用率和线程数:

等待活动监视器的统计数据(我知道它不是很可靠)
sp_blitzfirst 的结果:
sp_configure 的结果:
高级服务器设置(不幸的是只有德语)
MAXDOP …