Как развернуть Приложение ASP.NET с нулевым временем простоя

Пока я опаздываю на вечеринку, нужно сказать одно.

Первый параметр устанавливает array1_OfStrings в массив строк

Другой параметр указывает, что array1_OfStrings является массивом строк и затем устанавливает его пустым.

Пока это может быть очень небольшая разница, вы заметите это при компиляции. Для первого варианта компилятор автоматически попытается выяснить, что является типом array1_OfStrings. Второй вариант этого не сделает, вы дадите компилятору понять, что на самом деле это массив строк и сделано.

Почему это важно? Взгляните на следующую ссылку: https://thatthinginswift.com/debug-long-compile-times-swift/

Как вы можете видеть, если вы этого не сделаете объявить тип переменной, которая может повлиять на производительность сборки. LOT.

126
задан Sklivvz 30 September 2008 в 15:59
поделиться

6 ответов

Вам нужны 2 сервера и подсистема балансировки нагрузки. Вот находится на шагах:

  1. Поворот весь трафик в Сервере 2
  2. Развертывается на Сервере 1
  3. Поворот Тестового сервера 1
  4. , который весь трафик в Сервере 1
  5. Развертывает на Сервере 2
  6. трафик Поворота Тестового сервера 2
  7. в обоих серверах

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

79
ответ дан 24 November 2019 в 00:54
поделиться

Microsoft Web Deployment Tool поддержки это до некоторой степени:

Включает поддержку Windows Transactional File System (TxF). Когда поддержка TxF включена, операции файла атомарные; то есть, они или успешно выполняются или перестали работать полностью. Это гарантирует целостность данных и предотвращает данные или файлы от существующего в "промежуточном" или поврежденном состоянии. В MS Развертываются, TxF отключен по умолчанию.

кажется, что транзакция для всей синхронизации. Кроме того, TxF является функцией Windows Server 2008, таким образом, эта функция транзакции не будет работать с более ранними версиями.

я полагаю, что возможно изменить Ваш сценарий для папок использования с 0 временами простоя как версии и метабаза IIS:

  • для существующего пути/URL:
  • новая Копия (или измененный) веб-сайт к серверу под [1 133]
  • \web\app\v2.1 \
    • Изменяют метабазу IIS для изменения пути веб-сайта
      • от [1 120] \web\app\2.0 \
      • к [1 121] \web\app\v2.1 \

    , Этот метод предлагает следующие преимущества:

    • В конечном счете новая версия имеет проблему, можно легко откатывать к v2.0
    • Для развертывания к нескольким физическим или виртуальным серверам, Вы могли использовать свой сценарий для развертывания файла. После того как все серверы имеют новую версию, можно одновременно изменить метабазы всех серверов с помощью Microsoft Web Deployment Tool.
60
ответ дан 24 November 2019 в 00:54
поделиться

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

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

-7
ответ дан 24 November 2019 в 00:54
поделиться

Единственные нулевые методы времени простоя, о которых я могу думать, включают хостинг по крайней мере на 2 серверах.

5
ответ дан 24 November 2019 в 00:54
поделиться

Я бы немного уточнил ответ Джорджа, как показано ниже, для одного сервера:

  1. Используйте проект веб-развертывания, чтобы предварительно скомпилировать сайт в single DLL
  2. Заархивируйте новый сайт и загрузите его на сервер
  3. Разархивируйте его в новую папку, расположенную в папке с правильными разрешениями для сайта, чтобы распакованные файлы правильно наследовали разрешения (например, e: \ web, с вложенными папками v20090901, v20090916, и т. д.)
  4. Используйте диспетчер IIS, чтобы изменить имя папки, содержащей сайт
  5. Сохраните старую папку некоторое время, чтобы вы могли вернуться к ней в случае проблем

Шаг 4 приведет к тому, что рабочий IIS процесс для повторного использования.

Это нулевое время простоя только в том случае, если вы не используете сеансы InProc; вместо этого используйте режим SQL, если можете (даже лучше, полностью избегать состояния сеанса).

Конечно, это немного сложнее, когда есть несколько серверов и / или изменений в базе данных ....

1
ответ дан 24 November 2019 в 00:54
поделиться

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

В моей конфигурации у меня был веб-каталог для каждый сайт A и B выглядит следующим образом: c: \ Intranet \ Live A \ Интерфейс c: \ Intranet \ Live B \ Interface

В IIS у меня есть два идентичных сайта (одинаковые порты, аутентификация и т. д.), каждый со своим собственным пулом приложений. Один из сайтов работает (A), а другой остановлен (B). у живого также есть заголовок живого хоста.

Когда дело доходит до развертывания в реальном времени, я просто публикую на сайте ОСТАНОВЛЕННЫЙ. Поскольку я могу получить доступ к сайту B, используя его порт, я могу предварительно подогреть сайт, чтобы первый пользователь не вызвал запуск приложения. Затем с помощью командного файла я копирую заголовок живого хоста в B, останавливаю A и запускаю B.

7
ответ дан 24 November 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: