2012-01-22 2 views
1

У меня есть сайт asp.net-mvc3 с использованием nhibernate и SQL-сервера. У меня есть 2 веб-сервера, которые загружаются сбалансированными. Это прочитанный тяжелый db (который не так сильно зависит от производительности записи), но по мере того, как запросы становятся все более и более сложными (большое количество таблиц присоединяется), он значительно замедляет работу.Может ли Ncache Express решить эту проблему с масштабируемостью или мне нужно будет перейти на премьер-версию?

Основываясь на комментариях, которые я читал, самой большой победой было бы поставить распределенный кеш спереди. Я просмотрел бесплатные опции в окнах, поддерживающих nhibernate и I found NCache Express. Я собираюсь, очевидно, сделать кучу тестирования и игры, но я хотел видеть (до того, как я потратил много времени), если бы это экспресс-версии ограничивали меня вообще с точки зрения работоспособных решений. Я вижу сравнения версий здесь, и я не думаю, что вижу каких-либо блокировщиков, но хотел получить обратную связь от тех, кто использовал NCache Express с nhibernate, чтобы узнать, есть ли какие-либо проблемы.

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

+2

Прежде чем перейти к любому решению кэширования, я настоятельно рекомендую тщательно оптимизировать структуру базы данных (модель данных, индексирование, инструкции SQL, планы запросов) ... использовать профилировщик, чтобы найти какие-либо узкие места в приложении и действовать соответствующим образом. .. проверьте HW (DB-сервер, производительность сети и т. д.). ЕСЛИ действительно ВСЕ оптимизирован, и вы все еще недовольны работой THEN, проверяя кеширование ... – Yahia

+0

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

ответ

1

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

Я также работаю на веб-сайте с двумя серверами и в процессе выбора поставщика кеша, который я установил с MemcacheD. Он очень надежный, и его очень просто настроить. NCache Expresse тоже отлично справится, на нем нет никаких ошибок, но я рекомендую пойти с Memcache, потому что NCache express имеет ограничение на 2 сервера, поэтому, если вам когда-либо понадобится добавить дополнительный узел, вам все равно придется менять.

Кроме того, если на ваших серверах Windows 2008 вы должны проверить AppFabric от Microsoft, это очень хорошо.

+0

@ memcache поддерживается и рекомендуется использовать в окнах? – leora

0

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

1

Используйте это, чтобы оценить, какие функции вам требуется, чтобы NCache предлагает, например, Зависимости SQL и прочее http://www.alachisoft.com/ncache/edition-comparison.html

Другие, чем я не думаю, что вы должны модернизировать

и относительно альтернатив, я не использовал много, так что я не могу ничего сказать по этому поводу :)

PS: Реплицируется отлично для чтения приложений и плохо для интенсивной записи.