2

我正在使用带有 Ehcache 的 ColdFusion 9

Ehcache 运行良好,但由于我重新安装了我的机器Ehcache.Cache.put,拒绝处理特定元素,但正在处理大量其他元素。

Cache.put不抛出异常,大约需要 4 秒才能返回。我尝试放入缓存的元素是一个 ColdFusion 组件,并且只有 7ko 左右。我不使用序列化。

缓存配置为:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         maxBytesLocalHeap="300m">
         
<sizeOfPolicy maxDepth="99999999" maxDepthExceededBehavior="continue"/>

<defaultCache 
    eternal="false" 
    timeToIdleSeconds="300" 
    timeToLiveSeconds="1200" 
    overflowToDisk="false"
    statistics="true">

我把它改成

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
    maxEntriesLocalHeap="900">

<defaultCache 
    eternal="false" 
    timeToIdleSeconds="300" 
    timeToLiveSeconds="1200" 
    overflowToDisk="false"
    statistics="true"
    maxEntriesLocalHeap="100"> 

这行得通!从 a 更改maxBytesLocalHeapmaxEntriesLocalHeapconfig 会有所不同!我认为可能内部尺寸计算不起作用。使用maxEntriesLocalHeap不需要大小计算,这就是它适用于新配置的原因。

所以为什么:

  1. Cache.put不是maxBytesLocalHeap只处理一个特定的元素?
  2. 没有例外?
  3. Cache.put功能需要4秒?
  4. 全新机重新安装出现这个问题?

如果您有任何线索,请告诉我。我真的需要切换回maxBytesLocalHeap.

PS:

  • 该应用程序还使用 JDK 1.6、MachII、Hibernate 和 ColdSpring
4

2 回答 2

1

ColdFusion 元素的 Ehcache 大小调整过深,会处理每个 Java 底层对象,如 ColdFusion 框架对象等......

我通过设置过滤器解决了我的问题。我使用net.sf.ehcache.sizeof.filter指向包含 FQCN 或字段的文本文件位置的系统属性,以便调整引擎忽略。资料来源:http ://forums.terracotta.org/forums/posts/list/6371.page

net.sf.ehcache.sizeof.filter通过使用以下参数启动 Java VM 进行设置-D

-D net.sf.ehcache.sizeof.filter=/My/Path/To/File.config

我的过滤器配置文件包含:

coldfusion.runtime.NeoPageContext
coldfusion.runtime.CfJspPage
coldfusion.monitor.memory.MemoryTrackable
coldfusion.monitor.sql.QueryStat
coldfusion.monitor.memory.MemoryTrackerProxy
javax.servlet.ServletContext
于 2013-03-15T00:48:48.057 回答
0

请注意,在 ColdFusion 11 下,如果您要存储 Hibernate 对象的实例,则需要添加一些额外的排除项。最终名单是:

coldfusion.runtime.NeoPageContext
coldfusion.runtime.CfJspPage
coldfusion.monitor.memory.MemoryTrackable
coldfusion.monitor.sql.QueryStat
coldfusion.monitor.memory.MemoryTrackerProxy
javax.servlet.ServletContext
org.hibernate.engine.spi.SessionImplementor
org.hibernate.internal.SessionImpl
org.hibernate.internal.SessionFactoryImpl
于 2015-07-02T01:56:36.537 回答