第二级缓存关闭,锁定时仍然获得缓存项目已过期?

时间:2013-10-07 15:56:04

标签: asp.net nhibernate caching iis

我们有一个Web应用程序,我们发现以下错误存在很多问题:

NHibernate.Cache.ReadWriteCache - An item was expired by the cache while it was locked (increase your cache timeout)

这些行之后是应该持久保存到DB的随机实体。有时,这些似乎无法持续存在,或者缺少应该设置的某些字段,这给我们带来了很大的麻烦。

最奇怪的是,如果第二级缓存被关闭,我们仍然会看到这一点,这让我感到惊讶。运行的服务器具有64 GB RAM,使用率通常在55-60 GB左右,因为它承载多个站点。

当二级缓存应该关闭时,为什么我会看到这个?第一级缓存不应该像这样过期,对吧?我还尝试将CachePriority设置为永不过期,但它们仍会显示在日志中。

我做错了什么?我误导了吗?

1 个答案:

答案 0 :(得分:0)

我们在启用了读/写缓存但未在配置中设置第二级缓存提供程序的实体时收到相同的消息。

在NH配置文件中设置提供程序就足以摆脱该消息,即使为该提供程序禁用了查询和二级缓存(use_second_level_cache = off,use_query_cache = off)。

我们使用memcache,这是我们的NH配置文件在我们不想要二级缓存时的样子,但同时避免了日志消息:

<property name="cache.provider_class">NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache</property>
<property name="cache.use_second_level_cache">false</property>
<property name="cache.use_query_cache">false</property>
相关问题