此问题基本上是该问题的后续问题:
SQL Server 2016的奇怪性能问题
现在,我们使用此系统提高了生产率。尽管自上次发布以来,另一个应用程序数据库已添加到此SQL Server。
这些是系统统计信息:
- 128 GB RAM(SQL Server最大110GB内存)
- 4核心@ 2.6 GHz
- 10 GBit网络连接
- 所有存储均基于SSD
- 程序文件,日志文件,数据库文件和tempdb位于服务器的单独分区上
- Windows Server 2012 R2
- VMware版本HPE-ESXi-6.0.0-Update3-iso-600.9.7.0.17
- VMware Tools版本10.0.9,内部版本3917699
- Microsoft SQL Server 2016(SP1)(KB3182545)-13.0.4001.0(X64)2016年10月28日18:17:30版权所有(c)Windows Server 2012 R2 Standard 6.3(Build 9600 :)上的Microsoft Corporation标准版(64位) (主管)
我们的系统现在存在主要的性能问题。很高的CPU使用率和线程数:
活动监视器的等待统计信息(我知道这不是很可靠)
sp_blitzfirst的结果:
sp_configure的结果:
进阶伺服器设定(只有德文才可使用)
我更改了MAXDOP设置。
我知道这可能不是SQL Server本身的问题。可能是虚拟化(vmware),与网络相关(我已经测试过)或应用程序本身的问题。我只是想进一步确定它。
高ASYNC_NETWORK_IO是否会导致sqlserver进程的线程数增加?我以为它会激怒许多工作人员,因为无法关闭线程。那正确吗?
我将提供您需要的任何其他信息。预先感谢您的支持!
编辑:
的结果 sp_Blitz @OutputType = ‘markdown’, @CheckServerInfo = 1
优先级1:备份:
- 备份到数据库所在的同一驱动器-在过去两个星期中,在驱动器E:\上完成了5次备份,其中数据库文件也存在。如果该阵列发生故障,则表示严重的风险。
优先级1:可靠性:
过去2周以上的上次优良DBCC CHECKDB
babtec_prod-上次成功的CHECKDB:2017-08-20 00:01:01.513
D3PR-上一次成功的CHECKDB:永不。
DEMO77-上一次成功的CHECKDB:2016-02-23 20:31:38.590
FINP-上一次成功的CHECKDB:2017-04-23 22:01:19.133
GridVis_EnMs-上一次成功的CHECKDB:2017-05-18 22:10:48.120
master-上次成功的CHECKDB:永不。
模型
数据库
PROD77-上次成功的CHECKDB:2016-02-23 21:33:24.343
优先级10:效果:
查询存储已禁用-新的SQL Server 2016查询存储功能尚未在此数据库上启用。
babtec_prod
D3PR
演示77
财务报表
GridVis_EnMs
优先级50:DBCC事件:
DBCC DROPCLEANBUFFERS-用户schorsch在2017年9月21日11:57 AM和2017年9月21日11:57 AM之间运行DBCC DROPCLEANBUFFERS 1次。如果这是生产包装箱,请知道在发生这种情况时您正在清除内存中的所有数据。什么样的怪物会那样做?
DBCC SHRINK%-用户schorsch已在2017年9月21日11:51 PM和Okt 4 2017 9:02 AM之间缩小了6倍。那么,呃,他们是在尝试修复腐败还是造成腐败?
总体事件-在2017年9月19日1:40 PM和10月4日3:20 PM之间发生了287个DBCC事件。这不包括CHECKDB和其他通常为良性的DBCC事件。
优先级50:效果:
- 文件增长缓慢PROD77-2次增长花费了超过15秒。考虑将文件自动增长设置为较小的增量。
优先级50:可靠性:
- 页面验证不是最佳的babtec_prod-数据库[babtec_prod]具有TORN_PAGE_DETECTION用于页面验证。SQL Server可能很难识别和从存储损坏中恢复。考虑改用CHECKSUM。
优先级100:效果:
- 一个查询的许多计划-在计划缓存中为单个查询提供了3576个计划-这意味着我们可能存在参数化问题。
优先级110:效果:
没有聚簇索引的活动表
babtec_prod-[babtec_prod]数据库具有正在被主动查询的堆-没有聚集索引的表。
D3PR-[D3PR]数据库具有正在被主动查询的堆-没有聚集索引的表。
DEMO77-[DEMO77]数据库具有正在被主动查询的堆-没有聚集索引的表。
FINP-[FINP]数据库具有正在被主动查询的堆-没有聚集索引的表。
GridVis_EnMs-[GridVis_EnMs]数据库具有正在被主动查询的堆-没有聚集索引的表。
PROD77-[PROD77]数据库具有正在被主动查询的堆-没有聚集索引的表。
优先级150:效果:
不信任外键
babtec_prod-[babtec_prod]数据库中的外键可能已被禁用,数据已更改,然后再次启用了该键。仅启用密钥不足以使优化器使用此密钥-我们必须使用WITH CHECK CHECK CONSTRAINT参数更改表。
D3PR-[D3PR]数据库中的外键可能已被禁用,数据已更改,然后再次启用了该键。仅启用密钥不足以使优化器使用此密钥-我们必须使用WITH CHECK CHECK CONSTRAINT参数更改表。
没有聚集索引的不活动表
D3PR-[D3PR]数据库具有堆-没有聚集索引的表-自上次重新启动以来尚未查询过。这些备份表可能会被不小心遗忘。
GridVis_EnMs-[GridVis_EnMs]数据库具有堆-没有聚集索引的表-自上次重新启动以来尚未对其进行查询。这些备份表可能会被不小心遗忘。
表上的触发器babtec_prod-[babtec_prod]数据库具有26个触发器。
优先级170:文件配置:
C盘上的系统数据库
master-master数据库在C驱动器上有一个文件。将系统数据库放在C驱动器上可能会导致服务器空间不足而使服务器崩溃。
模型-模型数据库在C驱动器上有一个文件。将系统数据库放在C驱动器上可能会导致服务器空间不足而使服务器崩溃。
msdb-msdb数据库在C驱动器上有一个文件。将系统数据库放在C驱动器上可能会导致服务器空间不足而使服务器崩溃。
170优先级:可靠性:
档案大小上限
D3PR-[D3PR]数据库文件d3_data_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_data_idx_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_firm_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_firm_idx_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_log_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_phys_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_phys_idx_01的最大文件大小设置为61440MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_sys_01的最大文件大小设置为20480MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_usr_01的最大文件大小设置为20480MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_wort_01的最大文件大小设置为20480MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
D3PR-[D3PR]数据库文件d3_wort_idx_01的最大文件大小设置为20480MB。如果空间不足,即使可能有可用的驱动器空间,数据库也将停止工作。
优先级200:信息类:
备份压缩默认关闭-最近未压缩的完整备份已发生,并且备份压缩未在服务器级别打开。备份压缩包含在SQL Server 2008R2和更高版本中,即使在Standard Edition中也是如此。我们建议默认情况下启用备份压缩,以便临时备份将被压缩。
排序规则为Latin1_General_CS_AS FINP-用户数据库和tempdb之间的排序规则差异可能会导致冲突,尤其是在比较字符串值时
排序规则为SQL_Latin1_General_CP1_CI_AS-用户数据库和tempdb之间的排序规则差异可能导致冲突,尤其是在比较字符串值时
演示77
PROD77
已配置链接服务器-BWIN2 \ INFOR被配置为链接服务器。在与sa连接时检查其安全配置,因为查询它的任何用户都将获得管理员级别的权限。
优先级200:监控:
没有失败电子邮件的座席工作
尚未将作业syspolicy_purge_history设置为在失败时通知操作员。
尚未将作业upd_durchpreis_monatl设置为在失败时通知操作员。
尚未将作业upd_fertmengen_woche设置为在失败时通知操作员。
尚未将作业upd_liegezeit_monatl设置为在失败时通知操作员。
尚未将作业upd_vertreter_diff设置为在失败时通知操作员。
尚未将作业UPDATE_CONNECT_IK设置为在失败时通知操作员。
作业Wartung.Cleanup尚未设置为在失败时通知操作员。
尚未设置作业Wartung.DBCC Check DB来通知操作员失败。
尚未设置作业Wartung.Index neuerstellen来通知操作员是否失败。
尚未设置作业Wartung.Statistiken aktualisieren来通知操作员失败。
尚未设置作业Wartung.Transactionlog Backup来通知操作员失败。
尚未设置作业Wartung.Vollbackup SystemDB来通知操作员失败。
尚未设置作业Wartung.Vollbackup UserDB来通知操作员失败。
没有损坏警报-错误823、824和825不存在SQL Server代理警报。这三个错误可以为您提供有关早期硬件故障的通知。启用它们可以防止您很多伤心欲绝。
对于19-25级,没有警报-严重级别19到25不存在SQL Server代理警报。这是一些非常严重的SQL Server错误。知道这些情况正在发生,可以使您更快地从错误中恢复。
并非所有警报都已配置-并非所有SQL Server代理警报都已配置。这是一种免费,简便的方法,即使在监视系统启动之前,也可以通知您有关损坏,作业失败或重大停机的信息。
优先级200:非默认服务器配置:
代理XPs-此sp_configure选项已更改。其默认值为0,并且已设置为1。
数据库邮件XP-此sp_configure选项已更改。其默认值为0,并且已设置为1。
默认的全文本语言-此sp_configure选项已更改。默认值为1033,已设置为1031。
默认语言-此sp_configure选项已更改。其默认值为0,并且已设置为1。
文件流访问级别-此sp_configure选项已更改。其默认值为0,并且已设置为1。
最大并行度-此sp_configure选项已更改。其默认值为0,并且已设置为4。
服务器最大内存(MB)-此sp_configure选项已更改。默认值为2147483647,已设置为115000。
最小服务器内存(MB)-此sp_configure选项已更改。其默认值为0,并且已设置为10000。
远程管理员连接-此sp_configure选项已更改。其默认值为0,并且已设置为1。
优先级200:效果:
并行性的成本阈值-设置为5,其默认值。更改此sp_configure设置可以减少CXPACKET等待。
发生快照备份-在过去两周中进行了9次看似快照的备份,表明IO可能已冻结。
优先级210:非默认数据库配置:
启用读取提交的快照隔离-此数据库设置不是默认值。
D3PR
财务报表
递归触发器已启用-此数据库设置不是默认值。
演示77
PROD77
启用了快照隔离FINP-此数据库设置不是默认设置。
优先级240:等待状态:
1-ASYNC_NETWORK_IO-等待225.9小时,每小时平均等待时间143.5分钟,信号等待0.2%,2146022等待任务,平均等待时间378.9 ms。
2-CXPACKET-等待时间为43.1小时,每小时平均等待时间为27.4分钟,信号等待时间为1.5%,等待任务为32608391,平均等待时间为4.8 ms。
优先级250:信息性:
SQL Server在NT服务帐户下运行
我以NT Service \ MSSQL $ INFOR的身份运行。我希望我有一个Active Directory服务帐户。
我以NT Service \ SQLAgent $ INFOR的身份运行。我希望我有一个Active Directory服务帐户。
优先级250:服务器信息:
默认跟踪内容-默认跟踪在2017年9月3日8:34 PM和Okt 5 2017 12:50 PM之间保存760个小时的数据。默认跟踪文件位于:C:\ Program Files \ Microsoft SQL Server \ MSSQL13.INFOR \ MSSQL \ Log
C盘空间-C盘上21308.00MB可用空间
- D盘空间-D盘上280008.00MB可用空间
- Drive E Space-E盘上有281618.00MB可用空间
F盘空间-F盘上60193.00MB可用空间
硬件-逻辑处理器:4.物理内存:128GB。
硬件-NUMA Config-节点:0状态:ONLINE在线调度程序:4脱机调度程序:0处理器组:0内存节点:0内存VAS保留GB:281
服务器最后一次重启-Okt 1 2017 2:21 PM
服务器名称-BWINPDB \ INFOR
服务
服务:SQL Server(INFOR)在服务帐户NT Service \ MSSQL $ INFOR下运行。上次启动时间:Okt 1 2017 2:22 PM。启动类型:自动,当前正在运行。
服务:SQL Server-Agent(INFOR)在服务帐户NT Service \ SQLAgent $ INFOR下运行。上次启动时间:未显示。启动类型:自动,当前正在运行。
SQL Server上一次重新启动-Okt 1 2017 2:22 PM
SQL Server服务-版本:13.0.4001.0。补丁程序级别:SP1。版本:标准版(64位)。AlwaysOn启用:0。AlwaysOn经理状态:2
虚拟服务器-类型:(HYPERVISOR)
Windows版本-您正在运行Windows的非常现代的版本:Server 2012R2时代,版本6.3
优先级254:运行日期:
- 船长的日志:给某事加注星标...
编辑:
我已经研究了有关使用vmware设置sql服务器的最佳实践指南,并且我们已经根据本文对其中的大部分进行了设置。但是,超线程未激活,并且NUMA在vmware主机上未处于活动状态。SQL Server设置为NUMA。
编辑:
在将并行度的阈值设置为50之后,我已经发布了RECONFIGURE,我的MAXDOP设置也没有配置。
我还检查了我们的vmware管理员,好像我被误导了。我们的CPU设置为2.6 GHz而不是4.6 GHz。我已经更正了以上信息。
编辑: