Windows Server 2012 с приложением ASP.NET MVC перестает работать (ошибки ESENT)
Решением является приложение ASP.NET MVC, использующее E/F, размещенное в IIS на стандартной виртуальной машине Windows Server 2012 R2, размещенной в среде Hyper-V. Эта же виртуальная машина работает под управлением SQL Server 2012.
Хостинговая среда содержит 30 других решений, и на ней достаточно свободного дискового пространства и нет известных проблем с диском в хостинговой среде или ВМ (chkdsk и sfc были запущены на ВМ и не сообщали о каких-либо проблемах).
Проблема в том, что решение / сервер перестает работать на короткие промежутки времени (5–10 минут), и каждый раз, когда мы видим событие с кодом 508/533 от ESENT и сообщение о записи в "C:\Windows\system32\LogFiles\Sum".
Подобное сообщение было замечено с sqlsvr, но это было решено, давая всем все права на C:\Windows\system32\LogFiles\Sum.
Когда проблема сохраняется, она затрагивает всю ВМ, а иногда даже невозможно подключиться через удаленный рабочий стол.
Мы видели большое количество открытых соединений с SQL Server, когда возникали проблемы, и до введения кэширования для определенного метода Web API мы фактически смогли очистить пул соединений с SQL Server. На всякий случай мы изменили пул соединений со 100 до 200 соединений, хотя мы и не видели этой конкретной проблемы с тех пор, как представили кеш.
Все экземпляры DbContext удаляются с помощью "using", переопределения ApiController.Dispose или переопределения Controller.Dispose и только один SqlConnection (для системы ведения журнала).
Я подозреваю, что проблема находится за пределами решения и что большое количество подключений к SQL Server связано с тем, что SQL Server не может записать на диск.
Ниже приведены некоторые выдержки из журнала событий Windows для трех последних "сбоев" с дополнительной информацией о количестве веб-запросов до проблемы и после автоматического восстановления сервера.
Какие-либо предложения?
веб-запросов в течение 10 минут прямо перед проблемой: 1399
веб-запросов в течение первых 10 минут после восстановления сервера: 1630
18-03-2015 20:07:20 833 MSSQLSERVER SQL Server обнаружил 1 вхождение запросов ввода-вывода, выполнение которых занимает более 15 секунд для файла [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Xxx.mdf] в базе данных [Xxx] (5). Дескриптор файла ОС - 0x0000000000000A7C. Смещение последнего длинного ввода-вывода: 0x000003e104e000
18-03-2015 20:07:40 833 MSSQLSERVER SQL Server обнаружил 1 вхождение запросов ввода-вывода, выполнение которых занимает более 15 секунд для файла [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Xxx_log.ldf] в базе данных [Xxx] (5). Дескриптор файла ОС - 0x0000000000000A8C. Смещение последнего длинного ввода-вывода: 0x0000007f203000
18-03-2015 20:08:16 533 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 1806336 (0x00000000001b9000) для 4096 (0x00001000) байты не завершены в течение 36 секунд. Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
18-03-2015 20:17:14 508 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 1806336 (0x00000000001b9000) для 4096 (0x00001000) байт завершился успешно, но операционная система обслуживала ненормально много времени (36 секунд). Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
веб-запросов в течение 10 минут прямо перед проблемой: 696
веб-запросов в течение первых 10 минут после восстановления сервера: 614
19-03-2015 01:17:19 533 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 3067904 (0x00000000002ed000) для 4096 (0x00001000) байты не завершены в течение 36 секунд. Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
19-03-2015 01:33:02 508 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 3067904 (0x00000000002ed000) для 4096 (0x00001000) байт завершился успешно, но операционная система обслуживала ненормально много времени (983 секунды). Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
19-03-2015 01:33:03 833 MSSQLSERVER SQL Server обнаружил 5 вхождений запросов ввода-вывода, выполнение которых заняло более 15 секунд в файле [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Xxx_log.ldf] в базе данных [Xxx] (5). Дескриптор файла ОС - 0x0000000000000A8C. Смещение последнего длинного ввода-вывода: 0x000000a389d000
веб-запросов в течение 10 минут непосредственно перед проблемой: 555
веб-запросов в течение первых 10 минут после восстановления сервера: 784
19-03-2015 03:33:51 833 MSSQLSERVER SQL Server обнаружил 1 вхождение запросов ввода-вывода, выполнение которых занимает более 15 секунд для файла [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Xxx_log.ldf] в базе данных [Xxx] (5). Дескриптор файла ОС - 0x0000000000000A8C. Смещение последнего длинного ввода-вывода: 0x000000aa95f000
19-03-2015 03:40:48 533 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 3846144 (0x00000000003ab000) для 4096 (0x00001000) байты не завершены в течение 36 секунд. Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
19-03-2015 03:40:48 833 MSSQLSERVER SQL Server обнаружил 1 вхождение запросов ввода-вывода, выполнение которых занимает более 15 секунд для файла [C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\MSDBLog.ldf] в базе данных [msdb] (4). Дескриптор файла ОС - 0x0000000000000A90. Смещение последнего длинного ввода-вывода: 0x00000000108000
19-03-2015 03:40:49 508 ESENT svchost (1740) Запрос на запись в файл "C:\Windows\system32\LogFiles\Sum\Svc.log" со смещением 3846144 (0x00000000003ab000) для 4096 (0x00001000) байт завершился успешно, но операционная система обслуживала ненормально много времени (36 секунд). Эта проблема, вероятно, из-за неисправного оборудования. Пожалуйста, обратитесь к поставщику оборудования для дальнейшей помощи в диагностике проблемы.
19-03-2015 03:40:49 17894 MSSQLSERVER Диспетчер (0x1a88) из пула диспетчера "Основной пул диспетчера XE Engine" Рабочий 0x00000000F03B8160, по-видимому, не дает никаких результатов на узле 0. Приблизительно Используемый процессор: ядро 0 мс, пользователь 0 мс, Интервал: 336140.
2 ответа
Сначала я думал о проблемах с дисковым вводом / выводом, но самое забавное то, что на самом деле этого никогда не происходило в часы пик и что сервер в часы пик не нагружен процессором или диском ввода / вывода.
Я не могу найти ошибки диска VM. У меня нет доступа к среде хостинга, но мне говорят, что нет проблем с диском. Хостинговая среда выполняет резервное копирование ВМ, и если это проблема, с этим ничего не поделаешь, так как это требуется. Я мог бы попытаться переместить виртуальную машину на другой диск, но я не знаю, возможно ли это.
В настоящее время мы настроили детальный мониторинг дискового ввода-вывода на ВМ, и, надеюсь, это даст нам некоторую информацию о проблеме, но я, скорее, сомневаюсь в этом.
Возможно, виртуальная машина просто "больна", и следующим шагом может стать создание новой с нуля…
Похоже, ваш диск просто перегружен, поскольку операции ввода-вывода занимают так много времени. В идеале они должны занимать около 10 миллисекунд. Вместо этого они берут в 1000 раз больше.
Так как вы работаете на виртуальной машине, отслеживание проблемы может быть немного сложнее. Это связано с загрузкой ввода-вывода в виртуальной машине или на хосте? Ваш виртуальный диск может использоваться совместно с другими устройствами ввода-вывода хоста.
Можете ли вы переместить базу данных на другой том в виртуальной машине, размещенный на другом физическом шпинделе хоста?
Другая возможность состоит в том, что базовое хранилище выходит из строя, и операции ввода-вывода повторяются базовым оборудованием.
-Мартин