我的一台生产机器( 2012)的性能不太好。我开始运行WhoIsActive脚本,我得到了很多这样的等待类型:
(10871)PREEMPTIVE_OS_AUTHZINITIALIZECON
它们总是在调用检查特定用户权限的函数时发生。如果我正确理解了这一点,该函数必须等待近11秒才能得到Windows (参见authzinitializecontextfromsid/)。
全部产出:
00 00:00:10.876 75
<?query --
select @RetValue = ([dbo].[Users_IsMember]('some_role_name', @windowsUserName)
| is_srvrolemember('SysAdmin', @windowsUserName))
--?>
<?query --
MyDB.dbo.StoredProcName;1
--?>
DOMAIN\User (10871ms)PREEMPTIVE_OS_AUTHZINITIALIZECON master: 0 (0 kB),tempdb: 0 (0 kB),MyDB: 0 (0 kB) 10,875 0 0 NULL 93 0 0 <ShowPlanXML xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan" Version="1.5" Build="11.0.7001.0"><BatchSequence><Batch><Statements><StmtSimple StatementText="select @RetValue = ([dbo].[Users_IsMember]('some_role_name', @windowsUserName)
 | is_srvrolemember('SysAdmin', @windowsUserName))
 " StatementId="1" StatementCompId="49" StatementType="ASSIGN WITH QUERY" RetrievedFromCache="true" /></Statements></Batch></BatchSequence></ShowPlanXML> 3 runnable NULL 0 NULL ServerName AppName .Net SqlClient Data Provider 2018-12-17 09:29:35.413 2018-12-17 09:29:35.413 0 2018-12-17 09:29:46.447发布于 2019-05-24 15:40:21
在我的经验中,PREEMPTIVE_OS等待状态与分配给Server的内存与Windows本身之间的不平衡有关。
在这种情况下,操作系统急需内存资源。您可以尝试向该框中添加更多的总内存,或者确保将Server配置为只使用实例上安装的总内存的80 %。或者两者都有。
https://stackoverflow.com/questions/53811825
复制相似问题