2015-06-05 3 views
1

У меня есть однопользовательское веб-приложение ASP.NET, которое развертывается на веб-сервере Windows 2008R2, а БД находится на другом сервере.Запрос GAC относительно медленной начальной загрузки для веб-сайта asp.net

Мое приложение использует не менее 20 сторонних DLL, а общий размер этих DLL составляет около 150 МБ. Предполагая, что у нас есть 20 клиентских сайтов, работающих в IIS, эти 20 + DLL-файлы занимают много места в памяти, поскольку они загружаются в каждый отдельный процесс IIS. Мои проблемы:

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

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

Так что, учитывая эти условия, следует ли мне продолжить установку этих сборок в GAC? Из того, что я читал, я нахожу, что разработчики советуют мне против GAC по разным причинам (что я понимаю), но я все еще чувствую, что, учитывая мои условия, установка этих сборок в GAC не только значительно улучшит мое время загрузки, но и сохранит драгоценную RAM ,

Любые входные данные были бы замечательными.

Обратите внимание, что я уже профилировал производительность приложения с использованием ANTS и dotTrace, и нет существенных узких мест, которые могут привести к тому, что приложение будет загружаться так медленно во время первого нажатия. Также обратите внимание, что производительность приложения приемлема ПОСЛЕ первого попадания. Он загружает все страницы в течение 3 секунд, но первый удар занимает 3-5 мин.

+0

Медленные первые нагрузки ожидаются на динамически скомпилированных веб-сайтах. Если вы хотите делиться DLLS между экземплярами, да, продиктовать их и вставлять в gac. – Will

ответ

0

Даже если вы загрузите сборки из GAC, объем памяти будет таким же, поскольку каждое приложение загрузит собственную копию DLL в свое собственное пространство памяти.

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

Смежные вопросы