Проблемы с производительностью IIS7 - PullRequest
1 голос
/ 25 ноября 2011

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

У нас есть веб-сайт ASP.NET, который ссылается на пару DLL-библиотек .NET, и производительность была впечатляющей для наших клиентов! На нашем собственном тестовом сервере тот же набор данных занял 25 секунд (все еще не быстро, но это другая проблема), а у наших клиентов это заняло 6 минут!

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

Для дальнейшего тестирования я создал настольное приложение, которое ссылается на те же самые DLL, и запустил его на клиенте. Эти 6 минут опустились до ... 5 секунд !!! Что за ...?

Мы просмотрели все настройки в IIS7 и сравнили его с нашим IIS7 и ... Мы действительно тупы, чтобы честно признать. Характеристики серверов у клиента даже выше, чем у нас!

Давайте увеличим проблему. Мы говорим, например, о функции, которая создает объект и устанавливает 3 свойства. Никаких подключений к БД, вообще ничего сложного, просто:

'Creates a GeneralPractitioner
   Public Shared Function Create(ByVal gp As GeneralPractitionerTO) As GeneralPractitioner

'HACK Temporarily write to a logfile.
        WebHISPortaalBLL.WriteToLo
g.WriteToLog(Now.ToString("dd-MM-yyyy HH:mm:ss.fff") & " BEGIN WebHISPortaalBLL.GeneralPractitioner.Create", String.Empty, "PerformanceTest")

'Check if parameter is not nothing.
        If gp IsNot Nothing Then

'Create new instance of GeneralPractitioner and set properties in object initializer.
            Return New GeneralPractitioner With {.ID = gp.ID,
                                                 .Name = gp.Name,
                                                 .AGBCode = gp.AGBCode}

        Else
            Return Nothing
        End If

    End Function 

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

Этот метод на нашем тест-сервере:

24-11-2011 15: 23: 34,526 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.527 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.528 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.529 НАЧИНАЕТСЯ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.530 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.530 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.531 НАЧИНАЕТСЯ WebHISPortaalBLL.GeneralPractitioner.Create 24-11-2011 15: 23: 34.531 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create

Тот же метод на сервере клиента:

25-11-2011 10: 38: 11,414 НАЧАЛО WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.476 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.539 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.601 НАЧИНАЕТСЯ WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.664 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.726 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.789 НАЧАЛО WebHISPortaalBLL.GeneralPractitioner.Create 25-11-2011 10: 38: 11.851 НАЧАТЬ WebHISPortaalBLL.GeneralPractitioner.Create

Там, где нашему тест-серверу требуется в среднем 1 миллисекунда (и обычно 0,5 миллисекунды) для выполнения этой задачи, клиентскому серверу в среднем требуется 62 миллисекунды для выполнения этой задачи!

Почему ??

Есть ли кто-нибудь, кто может нам помочь? Мы будем благодарны за любые комментарии. Все.

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