我正在使用Saiku和PHPAnalytics在我的多维数据集上运行MDX查询。看起来,如果我运行查询,一切都很好,缓存也很好。但是如果我花了2个小时再次运行这些查询--它没有使用缓存!为什么?我需要缓存保存很长时间!该怎么办呢?我尝试添加此ti mondrian.properties mondrian.rolap.CachePool.costLimit = 2147483647
但是没有帮助。要做什么?
发布于 2013-07-10 03:07:57
Mondrian的默认内存缓存将内容存储在WeakHashMap中。这意味着它可以由JVM的垃圾收集器自行清除。大多数应用程序服务器都设置为定期执行垃圾收集(通常每小时左右)。您必须调整JVM的配置以不执行此操作。
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
您还可以实现自己的SegmentCache SPI缓存实现。如果您的实现使用硬引用,它们将永远不会被收集。这更难做,需要你做相当多的研究才能把它做好。您可以从查看default implementation开始,然后从那里开始。
发布于 2013-06-26 04:17:53
mondrian缓存应该会缓存起来,直到缓存被故意刷新。也就是说,它使用一个老化的系统来确定应该缓存什么,如果它耗尽了存储数据的内存,最旧的查询将被推出缓存并替换。
我没有尝试过PHPAnalytics之类的东西,但也许他们已经对Saiku服务器进行了一些调用,以定期刷新缓存,否则这种情况就不会发生。
https://stackoverflow.com/questions/15570498
复制相似问题