Member 13294248 Ответов: 1

Почему ASP.NET требуется приложение веб-службы IIS reset


Когда загрузка ЦП увеличивается от 70% до 80% в то время, когда пользователь вызывает метод веб-службы, например, как время 12.01.00, но он загружается на сервер базы данных через одну минуту, например, 12.02.00, и сервер базы данных дает ответ в долях миллисекунд на этот запрос и мы получаем эту ошибку System.Web.HttpException (0x80004005): время ожидания запроса истекло в elmah. Существует разница во времени между получением запроса в методе веб-службы и его отправкой в ​​базу данных. Когда процессор в норме, все работает плавно за доли секунды. Я не понимаю, почему эта разница во времени в одну минуту возникает между полученным запросом на стороне .net и отправкой его в базу данных. После сброса все работает нормально. Это происходит только на рабочем сервере, но не в разработке и UAT Server.
Версия IIS:-8.5 и sql 2012

Что я уже пробовал:

пытался найти всякий раз, когда мы получаем проблему производительности, сначала мы проверяем базу данных, работает ли какой-либо тяжелый запрос или нет.

1 Ответов

Рейтинг:
0

CodeWraith

Вы смотрели на HttpException? Возможно, существует внутреннее исключение и другая информация, которая может избавить нас от некоторых догадок. Я вижу по коду ошибки, что это тайм-аут, но кто знает.

Если это не поможет, попробуйте использовать профилировщик в среде SQL Server Management Studio.

Наконец, если действительно задерживается вызов веб-метода, попробуйте выполнить отладку в вызове службы и посмотрите, когда будет достигнута точка останова в веб-методе. Если это произойдет, проблема находится вне вашего кода и должна быть какой-то сетевой проблемой или проблемой конфигурации. Например, это может быть неправильно настроенный IIS.


Member 13294248

есть ли какой-либо инструмент для проверки того, сколько объектов создается в пуле приложений для этого проекта

CodeWraith

Может быть, сюита Sysinternals? Вам придется запустить один из инструментов на сервере для мониторинга процессов IIS.

https://technet.microsoft.com/de-de/sysinternals/bb842062

Member 13294248

Спасибо за ответ. я узнал, где была проблема в моем проекте. мы использовали шаблон DI в моем проекте, но теперь мы комментируем код, и он работает нормально. Ниже приведен мой пример кода.

var kernel = новое стандартное ядро();
ядра.Нагрузки(Собрание.GetExecutingAssembly());
var objRepo = ядро.Получить<irepository>();
Int64 Reponse = objRepo. WriteLogToDatabase(sInputJson, sCreatedBy, sAPIName, dtRequestDateTime, sPOSCode, sMobileNo, sDocNo, sDocPrefix, sVersion, Flag_Bulk, Bulk_count, Flag_Online);
обратный ответ;

Не могли бы вы помочь нам, как реализовать наилучший способ Ди? Потому что ниже линии
ядра.Нагрузки(Собрание.GetExecutingAssembly ()) занимает больше места в рабочем процессоре IIS. Если вы предоставите лучший способ реализации DI, он может полностью помочь в моем проекте.