Наша компания управляет несколькими серверами для пары сайтов. Сервер работает под управлением 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. Это тоже звучит не очень хорошо.
Что такое кольцевой буфер?
Кольцевой буфер - это фиксированный размер памяти, который используется для межпоточного или межпроцессного взаимодействия. По сути, информация записывается в кольцевой буфер, и когда система достигает конца, она снова начинает запись с начала. Также существует общий указатель, который указывает на текущий заголовок буфера.
Тем временем поток чтения читает с самого начала и пытается не отставать от писателя. Если процесс записи обгонит читателя, события / данные будут потеряны, но, по крайней мере, вы можете продолжить.
Обычно размер буфера таков, что этого не произойдет, если только не произойдет плохое.
Кольцевые буферы используются в ситуациях, когда проигрыш событий не фатален, а другие формы управления очередью имеют более серьезные проблемы.
Что тогда означает это событие?
Это означает, что существует кольцевой буфер, в который записываются ошибки безопасности. Другой поток читает кольцевой буфер и записывает информацию в файл журнала. Что и должно было случиться.
Это не ошибка. Это подробный журнал, в котором рассказывается, что он делает с ошибками безопасности (например, неудачный вход в систему), чтобы убедиться, что они не потеряны.