Проблема с производительностью приложений .NET в Windows 2003
-
12-09-2019 - |
Вопрос
У нас есть 2 четырехъядерных сервера Xeon с 8 ГБ оперативной памяти и установленной на нем Windows Server 2003 Enterprise.Мы установили на него наш сервер приложений, основанный на .NET Framework 3.5.Сервер использует SQL Server 2005 в качестве сервера базы данных.
Когда мы установили сервер приложений, он работал очень быстро и все было в порядке.Как только мы присоединили его к нашему домену, его производительность резко снизилась.Например, задача, выполнение которой занимало 1 секунду, теперь занимает около 30 секунд.Это очень странно, поскольку такое падение производительности наблюдалось только в приложениях на базе .NET, но остальные приложения по-прежнему работали с нормальной скоростью.
Кто-нибудь знает, почему это происходит?Любая помощь или предложение очень ценятся.
Решение 2
Я нашел ответ на свой вопрос, поэтому подумал, что было бы неплохо поделиться им здесь.CLR хочет создать свидетельство издателя для сборок с подписью аутентификации при попытке загрузить сборки.В нашем случае CLR пыталась подключиться к clr.microsoft.com, но доступ нашего сервера к Интернету был заблокирован, поэтому это вызывало огромную задержку всякий раз, когда сервер приложений пытался загрузить новую сборку.
В следующем сообщении описывается, как отключить эту функцию:
Другие советы
К сожалению, для ответа на ваш вопрос, вероятно, потребуется больше.Существует множество возможных причин, почему это происходит, и большинство из них связаны с вашим кодом.
Основываясь на признаке того, что вы присоединились к домену, а затем что-то начало вызывать проблемы, я бы сказал, что у вас много сетевых операций, которые раньше можно было выполнить локально на вашем компьютере, а теперь задержка фактически равна вызывая проблемы.
Но это дикая догадка, основанная на недостаточной информации.
Я бы предложил вам профилировать свой код.Узнайте, на что вы тратите большую часть времени во время выполнения, а затем опубликуйте здесь код или его исправленную версию, чтобы мы могли помочь вам оптимизировать его.
Я собираюсь сделать предположение и подумать, что вы говорите о веб-приложении.Если это верно, возможно, вам захочется взглянуть на пулы приложений, которые вы установили на веб-сервере.Ваше приложение может запутаться в выборе пула при запуске.
Еще одна вещь, которую следует проверить, — это ваши подключения к данным и убедиться, что вы закрываете все, что было открыто.
Последнее, как сказал Рэндольфо, вам просто нужно будет следить за выполнением вашего кода с помощью какого-то профилировщика и смотреть, где что-то связано.
Удачи!