c# - NHibernate - Memcached 性能不佳

标签 c# .net nhibernate caching memcached

我安装了 Membase 并创建了一个新的 memcached 存储桶。在设置中,为了简单起见,我选择设置一个端口 ID 为 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 慢了一个数量级。有什么地方看起来不对吗?我对设置这样的东西还很陌生。

在此先感谢您的帮助。

最佳答案

您的配置似乎没有任何明显的问题。 Syscache 使用 ASP.NET 缓存提供程序,你的应用程序和缓存之间没有网络通信,但理论上它应该只比本地主机上运行的 memcached 快一点(假设你有足够的内存来避免交换)。

您可能想尝试使用性能分析器运行您的应用,以查看时间实际花在了哪里。此外,您应该确保 memcached 实际上用于返回缓存的查询并且没有发出 sql 查询 - 记录 sql 并期望仅在第一次执行查询时看到它。

我正在使用 membasememcached bucketenyim memcached client ,具有与您相似的配置,我对性能非常满意。 membase 还提供了一个很好的管理控制台,您可以在其中查看有关缓存使用情况的各种有用统计信息。

此外,与您的问题无关,但请确保您在启用查询缓存之前了解其工作原理。看这个two posts来自 ayende。

关于c# - NHibernate - Memcached 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723592/

相关文章:

c# - WPF Windows 上的夜视模式

大对象的 C# UDP 对象二进制序列化

c# - Windows 上基于 Gtk 的 Mono.WebBrowser

.net - 如何在没有客户端证书的情况下出现 : WCF with Transport Security+Server Cert Auth.?

c# - Morfik - 适用于中型 Web 企业应用程序

c# - 通过约定的多列唯一约束 FluentNHibernate 自动映射

c# - 如何通过 jQuery 从其他页面动态插入页面中的 &lt;script&gt; 标签

javascript - 使用 JINT 从 javascript 文件读取 JSON 对象

.net - 如何在 VB.NET 中自动处理另一个类/模块中的表单事件?

c# - NHibernate/事件记录 : How to set foreign key without getting entire object?