Назад | Перейти на главную страницу

Проблемы с балансировкой нагрузки веб-приложения .Net с помощью сервера состояний

У нас есть несколько веб-серверов за балансировщиком нагрузки Netscaler. На каждом сервере (Win2008) размещается приложение ASP.Net (с использованием iis 6.1), настроенное на использование центрального сервера, на котором запущена служба .Net StateServer, для управления состоянием сеанса.

Когда мы настраиваем балансировщик нагрузки на использование «циклической» или «наименее загруженной» маршрутизации, веб-приложение регулярно дает сбой с ошибкой, указывающей на то, что что-то, что оно ожидало в состоянии сеанса, отсутствует. Однако он делает это не ВСЕГДА - только на определенных этапах, а затем примерно в 75% попыток.

Когда мы настраиваем балансировщик нагрузки на постоянство сервера (так, чтобы пользователь «зависал» на одном сервере), проблема не возникает. (Но это не наш желаемый режим работы)

Что мы уже проверили / сделали:

Есть ли у кого-нибудь предложения по поводу других вещей для проверки / возможных причин?

NB. У нас точно такая же настройка в другой среде - тот же тип балансировщиков нагрузки, то же веб-приложение, та же конфигурация, та же настройка сервера ... и все работает нормально. Единственная разница - это другая версия VMWare Tools, но не видите, в чем причина?

Спустя несколько месяцев мы обнаружили причину. Некоторые (но не все) серверы были обновлены до более новой версии .Net Framework.

Microsoft не поддерживает разные серверы, использующие один и тот же StateServer с разными версиями фреймворка, поэтому, когда клиенты переключались между сервером с 4.5.1 и сервером с более ранней версией, они по существу теряли сеанс, и приложение падало.

Если вы столкнулись с этой проблемой, я предлагаю вам проверьте, какой Framework установлен на каждом сервере - все они должны быть одинаковыми, чтобы они могли работать с одним и тем же StateServer.