влияние на производительность публикации кода для лазури - PullRequest
0 голосов
/ 24 января 2011

Хорошо, это довольно ненаучный вопрос.Извините заранее.Кто-нибудь из вас, использующий Windows Azure (и предпочтительно базу данных SQL Azure), сталкивался с действительно случайными проблемами с производительностью после публикации (или обновления) кода?

То, что я вижу, может быть до 24 часов после публикации.Это просто общая задержка.Для запросов http (s) требуется очень много времени (30 секунд - 1 минута), но тот же запрос может возвращаться в миллисекундах при следующем вызове.

Кажется, очень случайно.Когда я публикую код на Azure, что все нужно изменить?Балансировка нагрузки, кэш DNS, IP-адреса и т. Д. Может ли распространение всех этих изменений сетевого уровня вызвать мою проблему?

Кстати, почти во всех случаях я делаю модернизацию промежуточной среды, а затем меняю VIP на рабочий процесс.

1 Ответ

1 голос
/ 26 января 2011

Это в основном с вашими веб-ролями?Они запускают. NET код?(ASP.NET ?, WCF? И т. Д.)

Если это так, возможно, вы имеете дело с обычной задержкой .NET JIT в приложении IIS, которое было переработано из-за активности.Симптом звучит так же, как если у вас есть приложение ASP.NET на месте, и вы не обращаете на него внимания в течение некоторого времени.Рабочий IIS перерабатывается, и среда выполнения не будет JIT-компилировать ваше приложение до тех пор, пока не поступит новый HTTP-запрос. Это создает ситуацию, когда этот первый запрос может выполняться «навсегда», но каждый запрос, поступающий в следующие несколько минут, выглядит как «мгновенный ", как и следовало ожидать от вашего кода.

Это не специфично для Azure, но вы можете иметь дело со средой IIS, отличной от того, что вы запускаете на месте (что касается настроек по умолчанию для пула приложений по умолчанию)/ настройки прогрева после повторного использования).

редактирование с предложениями

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

Лучшим (если вам не нужно иное) является устранение основной причины, а именно IIS, перерабатывающей пул приложений.По умолчанию это происходит по таймеру или по количеству запросов (не уверен, какой в ​​Azure).Вы можете переопределить, когда это происходит в вашем файле web.config с элементом <recycling></recycling>.IIS.net имеет лучшее описание этих настроек.Посмотрите:

http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add/recycling

и посмотрите, поможет ли это.Я бы порекомендовал просто выполнить временную перезагрузку в течение периода времени, когда вас не ударили (например, среди ночи)

Другой вариант - обеспечить непрерывное посещение сайта трафиком.с каким-то программным обеспечением для голосования.Мониторы "uptime / status", такие как pingdom, отлично подходят для этого.Это хакерский подход, но я использовал его раньше в нечетных сценариях.(не рекомендуется)

Если это не сработает из-за особых требований к запуску (что звучит так, как будто у вас нет), в IIS есть модуль прогрева, а в C # 4.0 - классы прогрева.который может помочь.Опять же, есть еще что-то, что позволяет вам контролировать то, что происходит во время запуска, а не при запуске.

...