Любая причина, почему приложение ASP.Net 2.0 без кода займет 2 минуты для загрузки при первом запуске? - PullRequest
3 голосов
/ 18 июля 2009

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

У меня Windows VPS под управлением II6, и я переношу свои приложения ASP.Net на сервер. Когда я перехожу к одному из этих приложений, мне требуется около 2 минут, чтобы что-то сделать. Я создал приложение hello world и загрузил его, и это занимает 2 минуты, чтобы загрузить в первый раз. Если я перезапущу пул приложений, у меня точно такая же проблема.

Любое приложение, которое совместно использует пул приложений с другим приложением, будет работать после успешной загрузки одного приложения в этот пул приложений.

т.е. bob.example.com и jane.example.com находятся в пуле приложений с именем ABC1. Если я получу доступ к bob, загрузка займет 2-3 минуты. После того, как Боб загрузится, Джейн будет работать мгновенно, а Боб будет работать мгновенно. После 5-10 минут простоя или перезапуска пула приложений повторяется точно такой же процесс. В то время, когда Боб и Джейн работают нормально, если dave.example.com в пуле приложений XYZ9 загружен, я должен подождать 2-3 минуты, чтобы он тоже загрузился.

Кто-нибудь сталкивался с этой проблемой? Сейчас я нахожусь в режиме абсолютной паники, так как мне нужно перенести их к концу выходных.

О, и эти сайты мгновенно работают на старом сервере. Единственное отличие состоит в том, что старый сервер является 32-разрядным, а новый - 64-разрядным.

Ответы [ 9 ]

2 голосов
/ 19 июля 2009

На виртуальных хостах с общим доступом (VPS) я обнаружил, что доступ к диску может быть чрезвычайно медленным и изменяться в разное время суток. Когда пул приложений раскручивается, процесс должен загружаться с диска, и ему (предположительно) нужно загружать .Net framework.

(я задавал похожий вопрос здесь .)

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

Я использую службу мониторинга сервера, чтобы переходить по URL каждые 30 минут. Это помогает держать приложение загруженным. ASP.net 4.0 имеет некоторые функции , которые обещают помочь.

2 голосов
/ 19 июля 2009

Вы говорите, что для запуска требуется две минуты. Что система делает в это время? В частности, что делает w3wp.exe?

Я предлагаю вам запустить SysInternals 'Process Monitor , чтобы немного узнать о том, что происходит. Для создания полезного фильтра потребуется некоторое время, но оно того стоит.

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

2 голосов
/ 19 июля 2009

Вместо запроса файла .aspx, что произойдет, если вы запросите обычный файл .htm? Разница в том, что HTML-файлы не проходят через ASP.NET, поэтому, если проблема все еще возникает, вы знаете, что это скорее вещь IIS, чем вещь ASP.NET.

Хотя это и не ответ, это шаг к изоляции проблемы.

1 голос
/ 24 августа 2009

Я отключил переработку, и это исправило все ... иш. Как только это загружено, это загружено навсегда. Все еще не решает основную проблему, но 1and1 отказывается помочь в отношении проблем с IIS.

0 голосов
/ 19 июля 2009

Под каким удостоверением работает пул приложений?Домен или локальный?

Какие формы аутентификации вы используете?Если он анонимный, какую учетную запись он использует (доменную или локальную)>

Если вы проверяете диспетчер задач сразу после iisreset и захода на сайт, показывает ли он, что w3svc работает, или мы вообще его ждем?

А как насчет статического файла, например, .htm?

Это все, что у меня есть - надеюсь, это поможет.

0 голосов
/ 18 июля 2009

Имеет ли ваше приложение общий пул приложений с другими веб-приложениями? Другими словами, используете ли вы сторонний VPS и не можете контролировать пул приложений? Если это так, то код инициализации приложения для других приложений может быть причиной медленного запуска.

0 голосов
/ 18 июля 2009

Понятия не имею по этому вопросу.

Однако я где-то читал / слышал, что - при таком сценарии может оказаться возможным, что ваш запрос отправляется в Интернет для проверки домена, когда он должен сначала выполнить проверку в локальной сети (возможно, связанной с DNS).

Это полностью основано на том, что я могу вспомнить о подобной проблеме, которую люди обсуждают в статье / подкасте.

0 голосов
/ 18 июля 2009

Это может быть только начальная стоимость запуска компиляции домена приложения, но увеличенная, потому что вы используете VPS.

Какие у вас спецификации на это?

0 голосов
/ 18 июля 2009

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

Обновление

Чтобы отключить проверку списка отзыва сертификатов (CRL):

  • Открыть Internet Explorer
  • Перейти в Сервис -> Свойства обозревателя ...
  • Перейти на вкладку «Дополнительно»
  • Найдите раздел «Безопасность» и снимите флажок «Проверять аннулирование сертификата издателя».

Это отключает глобально, для всего сервера, проверку CRL и имеет побочный эффект - отключение проверок CRL в Autheodeode (т. Е. Проверок пула приложений ASP). Я не знаю ни одного более мелкозернистого метода. Кроме того, я не знаю, нужно ли это делать отдельно для x86-версии IE (для применения к 32-битным приложениям) и для x64-версии IE (для 64-битных приложений).

...