nHibernate, кэширование, веб-фермы и мульти-аренда

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

Для справки: у нас есть приложение, для которого мы недавно представили NHibernate: это приложение поддерживает множество экземпляров за общей веб-фермой - так, например, мы можем говорить с 50 базами данных (серверная часть SQL Server 2008) или более с общей веб-фермой. Каждая база данных не зависит друг от друга.

Мы уже нашли одну проблему - создание экземпляров фабрик сессий в IIS: когда это происходит, каждый сеанс занимает определенную память, в результате получается 50 идентичных фабрик сессий в памяти и w3wp.exe размер коммита лучшей части 800 МБ или более: это неприемлемо (рабочие процессы IIS могут запускаться из пула нескольких процессов w3wp, поэтому память просто исчезает). В результате мы смотрим на реализацию одной фабрики сессий и использование реализации IConnectionProvider для переключения между ними (см. Этот пост в блоге... совершенно не связанный с нами, но описывающий ту же проблему и решение).

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

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

Итак, по крайней мере из того, что я прочитал / исследовал до сих пор, кажется, что кэширование не может использоваться в этом типе развертывания. Если я наивен, пожалуйста, дайте мне знать и поправьте меня:-)

0 ответов

Другие вопросы по тегам