2016-05-09 6 views
2

У нас возникли проблемы с производительностью нашего сервера, и при анализе журналов запросов IIS мы видим много запросов, которые нужно выполнить за несколько минут.В наших журналах IIS, почему запросы длится 5 минут и дольше, когда executeTimeout составляет 110 секунд?

Как это возможно, когда значение по умолчанию для executionTimeout в элементе ASP.NET httpRuntime настройки является 110 секунд? Из docs говорят о executionTimeout [курсив мой]:

Задает максимальное количество секунд, что запрос разрешено выполнить перед тем, как автоматически закрыли ASP.NET.

Это именно то поведение, которое мы хотели бы видеть но ниже записей журнала заставить нас поверить, что что-то не так, и эти запросы не прекращаются после заданного (или по умолчанию) тайм-аут:

slowest requests

Я также проверил нашу базу кода для звонков на HttpContext.Server.ScriptTimeout, но есть только два из них, которые выполняются в некоторых редких случаях и назначаются не более 600 секунд.

+0

Мы используем узел ElasticSearch с Kibana в качестве интерфейса. Вот от чего скриншот. http://i.stack.imgur.com/efwWy.png загрузить штраф для меня ... – Oliver

+0

Отлично! Для ** получения Slowest Requests **: «Узел ElasticSearch с Kibana» возможен в Windows Server?Любые *** советы и подсказки *** о конфигурации _ElasticSearch & Kibana_? – Kiquenet

ответ

0

Сложно сказать, не зная больше о вашем приложении и окружении. Однако эта ссылка может помочь объяснить, почему она может быть выше ожидаемой.

Description of the time-taken field in IIS 6.0 and IIS 7.0 HTTP logging

В частности:

Начиная с IIS 6.0, поле затраченное время, как правило, включает в себя сетевое время. Прежде чем HTTP.sys регистрирует значение в поле времени, HTTP.sys обычно ожидает, что клиент подтвердит последнюю операцию отправки пакета ответа, или HTTP.sys ожидает, что клиент сбросит базовое TCP-соединение. Поэтому, когда большой ответ или большие ответы отправляются клиенту по медленному сетевому соединению, значение поля времени может быть больше, чем ожидалось.

Примечание Значение в поле времени приняты не включает в себя сетевое время, если одно из следующих условий:

  • Размер ответа меньше или равно 2 КБ, и ответ размер - из памяти.
  • Используется TCP-буферизация. Приложения, использующие HTTPAPI.dll, могут установить флаг HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA, чтобы включить буферизацию TCP на Windows Server 2003 с пакетом обновления 1 и выше. Это позволяет серверу отправлять все данные ответа клиенту без необходимости ждать для соответствующих подтверждений от клиента.

Надеюсь, что это поможет.

+0

Знаете ли вы, что в ASP.NET WebForms второй случай в разделе ** Примечание ** может быть правдой? Я пытаюсь оценить, действительно ли ваша ссылка является причиной проблемы. – Oliver

+0

Честно говоря, я не совсем уверен. Вот статья, в которой объясняется, что настройка немного больше ... https://blogs.msdn.microsoft.com/wndp/2006/08/15/buffering-in-http-sys/. Если бы я должен был догадаться, я бы сказал, что приложение зависит от того, как настроено IIS и что тип приложения (MVC или WebForms) по умолчанию не беспокоит. – WonderGrub

+0

Спасибо за ссылку, нашел ту же статью, тоже. Но я не могу найти никаких подсказок о том, использует ли ASP.NET буферизацию TCP или не отправлять ее ответы ... – Oliver