Han*_*non 11 sql-server-2005 sql-server
有谁知道“Non-yielding IOCP Listener”是什么意思?
我们的 SQL Server 上有一个错误检查转储:
=====================================================================
BugCheck Dump
=====================================================================
This file is generated by Microsoft SQL Server
version 9.00.5292.00
upon detection of fatal unexpected error. Please return this file,
the query or program that produced the bugcheck, the database and
the error log, and any other pertinent information with a Service Request.
Computer type is AT/AT COMPATIBLE.
Bios Version is DELL - 1
Phoenix ROM BIOS PLUS Version 1.10 1.5.2
Current time is 23:01:04 09/07/12.
48 Unknown CPU 9., 2 Mhz processor (s).
Windows NT 6.1 Build 7601 CSD Service Pack 1.
Memory
MemoryLoad = 81%
Total Physical = 524278 MB
Available Physical = 97549 MB
Total Page File = 524276 MB
Available Page File = 94472 MB
Total Virtual = 8388607 MB
Available Virtual = 7846765 MB
**Dump thread - spid = 0, PSS = 0x0000000000000000, EC = 0x0000000000000000
***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0008.txt
* *******************************************************************************
*
* BEGIN STACK DUMP:
* 09/07/12 23:01:04 spid 0
*
* Non-yielding IOCP Listener
*
* ******************************************************************************* </pre>
SQLDump0008.log contains:
<pre>
No user action is required.
2012-09-07 18:30:11.28 spid782 Recovery of any in-doubt distributed transactions involving Microsoft Distributed Transaction Coordinator (MS DTC) has completed. This is an informational message only. No user action is required.
2012-09-07 20:58:54.53 spid196 The alert for 'average delay' has been raised. The current value of '509' surpasses the threshold '100'.
2012-09-07 20:59:24.74 spid477 The alert for 'average delay' has been raised. The current value of '299' surpasses the threshold '100'.
2012-09-07 21:44:06.53 spid23s Database mirroring is inactive for database 'ToDoLists'. This is an informational message only. No user action is required.
2012-09-07 21:44:06.59 spid456 The alert for 'average delay' has been raised. The current value of '518' surpasses the threshold '100'.
2012-09-07 21:44:57.98 spid425 Error: 18056, Severity: 20, State: 27.
2012-09-07 21:44:57.98 spid425 The client was unable to reuse a session with SPID 425, which had been reset for connection pooling. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
2012-09-07 21:44:57.98 spid808 Error: 18056, Severity: 20, State: 27.
2012-09-07 21:44:57.98 spid808 The client was unable to reuse a session with SPID 808, which had been reset for connection pooling. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
2012-09-07 21:44:58.01 spid155 Error: 18056, Severity: 20, State: 27.
2012-09-07 21:44:58.01 spid155 The client was unable to reuse a session with SPID 155, which had been reset for connection pooling. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
2012-09-07 21:44:58.03 spid486 Task (Worker 0x00000001B93B21C0) was forced to yield 2 times:
2012-09-07 21:44:58.04 spid65s Database mirroring is inactive for database 'Tracking'. This is an informational message only. No user action is required.
2012-09-07 21:44:58.06 spid486 Task (Worker 0x0000000CB9B341C0) was forced to yield 8 times:
2012-09-07 21:44:58.09 spid486 Task (Worker 0x0000000655A9E1C0) was forced to yield 3 times:
2012-09-07 21:44:58.10 spid486 Task (Worker 0x00000006C03BE1C0) was forced to yield 8 times:
2012-09-07 21:44:58.11 spid65s Error: 1404, Severity: 16, State: 6.
2012-09-07 21:44:58.11 spid65s The command failed because the database mirror is busy. Reissue the command later.
2012-09-07 21:44:58.11 spid486 Task (Worker 0x0000000C819D01C0) was forced to yield 2 times:
2012-09-07 21:44:58.49 spid140 The alert for 'average delay' has been raised. The current value of '191' surpasses the threshold '100'.
2012-09-07 21:45:00.66 spid46s SQL Server has encountered 6 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 21:45:17.25 spid83s SQL Server has encountered 6 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 21:45:17.25 spid54s SQL Server has encountered 6 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 21:45:17.28 spid45s The mirrored database "Tracking" is changing roles from "PRINCIPAL" to "MIRROR" due to Role Syncronization.
2012-09-07 21:45:17.61 spid46s Bypassing recovery for database 'Tracking' because it is marked as a mirror database, which cannot be recovered. This is an informational message only. No user action is required.
2012-09-07 21:45:29.21 spid45s Database mirroring is active with database 'Tracking' as the mirror copy. This is an informational message only. No user action is required.
2012-09-07 21:50:56.94 spid196s SQL Server has encountered 5 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 21:50:57.14 spid196s SQL Server has encountered 5 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 21:50:57.14 spid196s SQL Server has encountered 5 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
2012-09-07 23:00:09.42 spid438 Error: 18056, Severity: 20, State: 27.
2012-09-07 23:00:09.42 spid438 The client was unable to reuse a session with SPID 438, which had been reset for connection pooling. This error may have been caused by an earlier operation failing. Check the error logs for failed operations immediately before this error message.
2012-09-07 23:01:04.26 Server Using 'dbghelp.dll' version '4.0.5'
2012-09-07 23:01:04.29 Server **Dump thread - spid = 0, PSS = 0x0000000000000000, EC = 0x0000000000000000
2012-09-07 23:01:04.29 Server ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump0008.txt
2012-09-07 23:01:04.29 Server * *******************************************************************************
2012-09-07 23:01:04.29 Server *
2012-09-07 23:01:04.29 Server * BEGIN STACK DUMP:
2012-09-07 23:01:04.29 Server * 09/07/12 23:01:04 spid 0
2012-09-07 23:01:04.29 Server *
2012-09-07 23:01:04.29 Server * Non-yielding IOCP Listener
2012-09-07 23:01:04.29 Server *
2012-09-07 23:01:04.29 Server * *******************************************************************************
2012-09-07 23:01:04.29 Server * -------------------------------------------------------------------------------
2012-09-07 23:01:04.29 Server * Short Stack Dump
2012-09-07 23:01:04.33 spid73 The alert for 'average delay' has been raised. The current value of '304' surpasses the threshold '100'.
2012-09-07 23:01:04.34 Server Stack Signature for the dump is 0x00000000000002E8
Run Code Online (Sandbox Code Playgroud)
关于“平均延迟”消息的警报涉及数据库镜像和是一个警报升高时提交事务花费的时间推移的规定时间以上。is_event_logged
对于“平均延迟”警报,该列为 0。
您可以sys.configurations
在What can cause a mirroring session to timeout then failover? 中看到输出?.
IOCP 是 I/O 完成端口。Non-Yielding IOCP Listener 意味着处理 IO 完成例程的线程花费了(相对)很长的时间来做某事,而 SQLOS 虽然它可能会卡住/挂起/无论如何。
Sql server 做了大量的 ASYNC IO。它的工作方式是当它向操作系统提交 IO 请求时,它会说“异步执行此 IO。这是完成后要调用的函数指针。”
被调用的函数是 IO 完成侦听器。
考虑从磁盘读取的页面。运行选择的线程需要读取不在内存中的页面。它需要一个 PAGEIOLATCH,向 Windows 发出异步 IO 以读取页面,然后进入睡眠状态。
当操作系统完成 IO 时,它调用 IOCP 函数,该函数将 IO 标记为“完成”。不久之后,一个 sql 线程完成了它的 4ms 时间段,并检查要处理的 IO。它将它标记为完成并向发出线程发出信号唤醒。SELECT 线程得到调度,释放 PAGEIOLATCH,并且生活很好。
现在,IOCP 所做的工作量因所涉及的 IO 类型而异。我相信使用 DB Mirroring,它比仅将页面读入缓冲池所做的工作更多。
如果您是在 sql server 上工作的程序员,并且想要优化 DB 镜像代码,那么您可能会倾向于在 IOCP 镜像代码路径与 SQLOS 系统线程代码路径中投入更多工作。
或者 IOCP 可能需要将数据复制到某个固定大小的镜像缓冲区中,并且它会一直处于循环中直到完成。
或者可能 <> 发生了,并且 IOCP 功能似乎“卡住了”。
如果它发生在故障转移期间并且发生了很多 LOG 活动,我不会担心这一点。如果持续发生,则可能需要进一步调查。
归档时间: |
|
查看次数: |
4165 次 |
最近记录: |