Caching Appfabric缓存(Velocity):在不可过期的缓存和不可读取的跟踪日志中过期?

Caching Appfabric缓存(Velocity):在不可过期的缓存和不可读取的跟踪日志中过期?,caching,appfabric,Caching,Appfabric,我们在项目中使用Appfabric缓存,遇到了两个主要问题 首先,我们使用命名缓存(没有显式创建的区域)。其中一个,创建为Expirable=false,execution=none,TTL=525600,用于应该始终可用的对象(在应用程序启动时通过Put方法填充)。但有时(我无法确定确切的时间跨度,也无法连接到应用程序中的某些操作)此缓存中的所有对象突然过期-我可以从性能计数器看到这一点-此缓存的对象计数变为0,过期对象总数计数器同时增加此缓存中的对象数量。我是否缺少其他设置?我试着在没有ti

我们在项目中使用Appfabric缓存,遇到了两个主要问题

首先,我们使用命名缓存(没有显式创建的区域)。其中一个,创建为Expirable=false,execution=none,TTL=525600,用于应该始终可用的对象(在应用程序启动时通过Put方法填充)。但有时(我无法确定确切的时间跨度,也无法连接到应用程序中的某些操作)此缓存中的所有对象突然过期-我可以从性能计数器看到这一点-此缓存的对象计数变为0,过期对象总数计数器同时增加此缓存中的对象数量。我是否缺少其他设置?我试着在没有timespan的情况下通过Put()插入它们,在有timespan的情况下插入“一年”。几分钟后仍然过期


第二个问题——当我试图解决第一个问题时,我决定使用ETW跟踪日志功能在日志中查看发生了什么。我已经通过logman创建了tracelog并启动了它,等待缓存过期,停止了日志,并使用TracePt从etl创建了转储文件。到目前为止一切正常。但是这个转储文件是无用的,因为没有可读数据,只有4400690073007400720。。。。。。。经过一些快速的研究,我发现,我需要向tracerpt提供一个PDB或TMF文件,以便它能够将二进制事件数据“解码”为可读的事件数据。是否可以为appfabric缓存获取其中一些?或者有其他方法将ETW与appfabric一起使用,以获取有用的可读日志?

这里有一个将日志文件转换为cvs的解释:


但我甚至不能使用tracelog工具。

当缓存几乎立即过期时,我发现了问题所在。 如果内存不足,缓存将被清除

签入eventvwr->ApplicationandService->Microsoft->Windows-ApplicationServer系统服务并选择Operational

查看以下警告:

服务可用内存低-缓存专用字节百分比{2}缓存工作集百分比{1}缓存数据大小百分比{0}可用内存百分比{21}CLR Generation2计数{2013}释放内存百分比{0}