Профилирование в реальном времени = 45 секунд, но время потока = 0,387 секунд, что может вызвать это расхождение?

Итак, наш хостинг-провайдер недавно переместил наш тестовый сервер из одной среды в другую, виртуализированную среду. После переезда некоторые вещи в тестовой среде стали очень медленными.

Например, вход на удаленный рабочий стол был медленным, не используя удаленный рабочий стол, просто входил в систему. Также некоторые приложения asp.net, которые обычно работают как ветер, теперь работают как черепаха. После долгих споров о причине этого замедления я начал исследовать реальную проблему.

Последняя интересная находка была обнаружена, когда я установил dotTrace на тестовом сервере. Запуск страницы, которая, как я знал, будет работать плохо, я получил следующие (высокоуровневые) результаты для потока, который выполнил работу для проблемной страницы:

Real/wall time: 45538 ms
Thread time:    375 ms

Насколько я знаю, это означает, что Поток ужасно долго не исполняется. Моя собственная теория о том, что виртуальная среда отдает приоритет работе других серверов над моим сервером. Может ли это быть причиной? о чем ты думаешь?

Примечание: если вам нужны более подробные данные, такие как фактические следы, у меня нет проблем с их выдачей, если вы спросите.

Изменить: Подробнее! Самые дорогие звонки в трассировке:

1 вызов KeyInfoX509Data.ctor(X509Certificate, X509IncludeOption): 30014 мс
1 вызов для SignedXml.ComputeSignature: 15045 мс

Детали трассировки

2 ответа

Решение

Так что это оказалось проблемой безопасности / сети / DNS. Одна из регистраций DNS на сервере была неверной. Это привело к тому, что при попытке поиска на сервере AD был возвращен неправильный IP-адрес. Это тогда привело к таймаутам при запросе информации AD, что затем снова привело к некоторым другим проблемам. Все эти проблемы показывали себя как долгую паузу при запросе определенных страниц.

Для меня это несоответствие крики IO ждут проблемы. Скорее всего, диск или сеть, хотя процессор меня тоже не удивит.

Поскольку, похоже, что именно при чтении сертификата, я бы посмотрел, есть ли другая ВМ / служба, жадная до диска или сети. Постоянная загрузка больших файлов или доступ к базе данных может быть основной причиной.

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

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

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

Другие вопросы по тегам