当前位置: 首页 > 知识库问答 >
问题:

Ehcache。Cache.put不适用于特定的ColdFusion元素(大约需要4秒钟)

呼延修然
2023-03-14

我正在将ColdFusion 9与Ehcache一起使用

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"> 

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

那么为什么:

  1. 缓存。是否仅在一个特定元素上放置不使用maxBytesLocalHeap
  2. 也不例外
  3. 缓存。put函数需要4秒吗
  4. 新机器重新安装时出现此问题

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

PS:

  • 该应用程序还使用了JDK 1.6,MachII,Hibernate和ColdSpring。

共有2个答案

邹桐
2023-03-14

请注意,在 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
景远航
2023-03-14

ColdFusion元素的Ehcache大小太深,无法处理每个Java底层对象,如ColdFusionFrameworks对象等。。。

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

我通过使用< code>-D参数启动Java VM来设置< code > net . SF . ehcache . sizeof . filter ,如下所示:

-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
 类似资料:
  • 触发事件大约需要10秒。 以下是为 根据文档,这可能需要几秒钟。 此方法立即返回。调用它会导致位置管理器获得位置修复(可能需要几秒钟),并使用结果调用代理的locationManager(uuIdUpdateLocations:)方法。 但这会花费10秒吗?还是我遗漏了什么?

  • 问题内容: 假设这样: 我为什么看不到任何东西? 问题答案: 当您将标记字符串传递到时,会使用(或其他适用于特殊情况的容器)容器上的浏览器属性将标记字符串解析为HTML 。无法解析SVG或其他非HTML内容,即使可以,也无法分辨出该内容应该在SVG命名空间中。 在SVGElement上不可用- 它仅是HTMLElement的属性。当前没有属性或其他方法(*)将内容解析为SVGElement。因此,

  • 问题内容: 我正在尝试使用选择器将图像放置在另一个图像上,但是我发现将图像放置在一个元素之前(仅在其他某个元素之前)根本不起作用。具体来说,我的风格是: 我发现这很好用: 但这不是: 我可以使用或元素代替它,浏览器可以将我的图像正确地覆盖在该元素中的图像上,但是如果我将overlay类应用于自身,则无法正常工作。 我希望这项工作能够正常进行,因为这会让我感到不舒服,但更重要的是,我有大约100个我

  • 问题内容: 我想在单词中镜像字母,所以我使用了CSS变换属性,但是如果我将文本包裹在一个范围内则无法使用,但是如果我选择了ass或 那么转换不适用于内联元素吗? 示例1(转换失败) 示例2(Works,如果使用OR) 问题答案: 在官方W3规范中,在可转换元素下回答: 一个元素,其布局由CSS框模型控制,该CSS框模型可以是 块级 或 原子内联级元素 ,或者其“ display”属性可以计算为“

  • 我正在编写XSD来验证XML,但在验证时出现了以下错误: 输出错误 使用XML架构验证当前文件: 错误:元素'{http://www.w3.org/2001/XMLSchema-instance}Gasto':不应使用此元素。预计为(加斯托) ...我不明白这个错误 以下是我的XML示例: 下面是我的XSD示例: