我们公司正在为几个网站运行几台服务器。 服务器正在运行Windows Server 2012,而对于数据库,我们有MS SQL Server 2012。
今天我正在检查位于以下位置的日志文件:
"C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log"
我在事件日志“system_health”中发现了这个奇怪的事情:
security_error_ring_buffer_recorded
点击它给了我更多的信息:
api_name ImpersonateSecurityContext call_stack 0x6E2715B4FB0700007C36FBB3FB070000A553FBB3FB070000... <- this one continues forever calling_api_name NLShimImpersonate error_code 5023 id 0 session_id 51 time_stamp 190360
如果不是因为“错误”和“录制”部分,这听起来并不好,
这个事件每天都在发生,有时会在几分钟之内发生,有时在几秒钟之内会发生几百次。
这是我第一次检查这些日志文件。
有人可以向我解释这是什么和如何“修复”,如果这是必要的?
编辑:
除了这个事件,还有一个叫做:
"scheduler_monitor_system_health_ring_buffer_recorded"
点击它显示“page_faults”为8913.现在这听起来不太好。
什么是环形缓冲区?
环形缓冲区是用于线程间或进程间通信的固定大小的存储器。 本质上,信息被写入到环形缓冲区,当系统到达结束时,它又开始在开始处写入。 还有一个指向缓冲区当前头部的共享指针。
同时,阅读线索从一开始就读取,并试图跟上作者。 如果作家程序超越读者,那么事件/数据将会丢失,但至less你可以继续。
通常缓冲区的大小是这样的,除非发生坏事,否则不会发生。
当事件丢失不是致命的时候使用环形缓冲区,其他forms的队列pipe理有更大的问题。
这个事件是什么意思呢?
这意味着有一个环形缓冲区正在写入安全错误。 另一个线程正在读取环形缓冲区,并将信息logging到日志文件中。 这是应该发生的事情。
这不是一个错误。 这是详细的logging,告诉你它是怎么做的安全错误(例如login失败),以确保他们不会迷路。