Как сделать прокручивающийся перезапуск кластера полукровок

, используя этот код

Response.Redirect(resp.RedirectUrl, false);
Context.ApplicationInstance.CompleteRequest();

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

Попробуйте использовать этот код, который остановит дальнейшее выполнение вашей программы

Response.Redirect(resp.RedirectUrl, false);
return;

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

relative Перенаправить на страницу с помощью endResponse для истинного VS CompleteRequest и защитного потока

7
задан Cameron Booth 23 September 2008 в 22:13
поделиться

3 ответа

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

Решения, которые мы предложили (прежде чем, находя SeeSaw, который мы не используем) состояли в том, чтобы вывести половину полукровок из эксплуатации от подсистемы балансировки нагрузки. Завершите работу их. Обновите их. Запустите их. Отложите тех полукровок онлайн в подсистеме балансировки нагрузки и снимите другую половину. Завершите работу второй половины. Обновите вторую половину. Запустите их. Это значительно минимизирует время, где у Вас есть две различных версии приложения, работающего одновременно. Я записал bat-файл окон, чтобы сделать это. (Развертывающийся в Windows не рекомендуется, btw),

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

3
ответ дан 7 December 2019 в 12:26
поделиться

Качели являются драгоценным камнем, найденным в направляющих Океания Проект Rubyforge, который обеспечивает этот вид функциональности к кластерам полукровки. Однако проект может страдать от некоторой разрядной гнили не havain, имел выпуск с 2007. Все еще стоящий взгляда даже только для зажимания идей :)

1
ответ дан 7 December 2019 в 12:26
поделиться
#!/bin/bash
for PIDFILE in /tmp/mongrel.*; do
  PID=$(cat ${PIDFILE})
  kill ${PID}
  ${RUN_MONGREL_CMD} ${PID}
  sleep 2
done
1
ответ дан 7 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

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