NHibernate - плохая производительность с Memcached - PullRequest
3 голосов
/ 20 апреля 2011

Я установил Membase и создал новую корзину memcached. В настройках я выбрал настройку выделенного порта с идентификатором порта 1111 для простоты.

В моем web.config у меня есть это:

<configSections>
  <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler, NHibernate.Caches.MemCache" requirePermission="false" />
  ...
</configSections>

<memcache>
  <memcached host="127.0.0.1" port="1111" />
</memcache>

В моем разделе конфигурации NHibernate:

<property name="cache.use_query_cache" >true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider, NHibernate.Caches.MemCache</property>

В каждом из моих сопоставлений классов в NHibernate это находится вверху справа после тега класса:

<cache usage="nonstrict-read-write" />

Когда я запускаю это, мои запросы на порядок медленнее, чем если бы я использовал Syscache. Есть что-нибудь, что выглядит не так? Я довольно новичок в настройке чего-то подобного.

Заранее благодарим за любую помощь.

1 Ответ

5 голосов
/ 20 апреля 2011

Кажется, у вас нет очевидных проблем в вашей конфигурации.Syscache использует провайдер кэша ASP.NET, и между вашим приложением и кешем нет сетевого взаимодействия, но теоретически он должен работать только немного быстрее, чем memcached, работающий на localhost (при условии, что у вас достаточно памяти, чтобы избежать перестановки).

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

Я использую membase с memcached bucket и enyim memcached клиент , с конфигурацией, аналогичной вашей, и я оченьдоволен производительностью.Мембрана также предоставляет хорошую консоль администрирования, где вы можете увидеть различные полезные статистические данные об использовании кэша.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...