Hi,
For currently evict policy only support node level. so I use one onde to store one
object. but I hit some problem when implement that.
Had anyone tried put 1,000,000 nodes in TreeCache. when using JDBC cache loader(local
mysql database), the performance is quite poor while BdbjeCacheLoader is good for previout
400,000.
after that, the program will hang.
is there any limitation of max nodes of treecache or i miss something ?
| package org.jboss.cache.passivation;
|
| import java.io.Serializable;
| import java.util.Properties;
|
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.transaction.UserTransaction;
|
| import org.apache.commons.logging.Log;
| import org.apache.commons.logging.LogFactory;
| import org.jboss.cache.CacheException;
| import org.jboss.cache.Fqn;
| import org.jboss.cache.PropertyConfigurator;
| import org.jboss.cache.TreeCache;
| import org.jboss.cache.loader.CacheLoader;
| import org.jboss.cache.loader.SamplePojo;
|
| public class TestPassivation1 {
|
| TreeCache cache = null;
| CacheLoader loader = null;
|
| /**
| * @param args
| */
| public static void main(String[] args) throws Exception {
| TestPassivation1 tester = new TestPassivation1();
| tester.start();
| long start = System.currentTimeMillis();
| tester.test1();
| System.out.println("/test/0" +
tester.cache.get(Fqn.fromString("/test/0"),"0"));
| tester.print(10);
| Thread.sleep(10000);
|
| System.out.println("/test/1" +
tester.cache.get(Fqn.fromString("/test/1"),"1"));
| tester.print(10);
|
| long end = System.currentTimeMillis();
| System.out.println(end - start);
|
| tester.stop();
| }
|
|
|
| private void test1() throws Exception{
| long start = 0;
| long end = 0;
| start = System.currentTimeMillis();
| for(int j = 0; j < 100000; j ++){
| cache.put("/test/" +(j) ,"" + j,"Object" + j);
| }
| end = System.currentTimeMillis();
| System.out.println("cost :" + (end-start));
| for(int j = 0; j < 1000; j ++){
| start = System.currentTimeMillis();
| for(int i = 0; i < 1000; i ++){
| cache.put("/test" + j + "/" +(i) ,"" +
i,"Object" + i);
| }
| end = System.currentTimeMillis();
| System.out.println("cost " + j + ":" + (end-start));
| // if(j % 20 == 0){
| // System.gc();
| // }
| }
|
| }
|
| private void print(int count) throws Exception{
| for(int i = 0; i < count; i ++){
| System.out.println("Cache exists [/test/" + i + "]:" +
cache.exists("/test/" + i));
| }
| for(int i = 0; i < count; i ++){
| System.out.println("Loader exists [/test/" + i + "]:" +
loader.exists(Fqn.fromString("/test/" + i)));
| }
| }
|
| private void start() throws Exception{
| cache = new TreeCache();
| PropertyConfigurator pc = new PropertyConfigurator();
| pc.configure(cache, "META-INF/tree-service1.xml");
|
| cache.createService();
| cache.startService();
| loader = cache.getCacheLoader();
|
| }
|
|
| private void stop() throws Exception{
| cache.remove("/");
| loader.remove(Fqn.fromString("/"));
| cache.stopService();
| cache.destroyService();
| }
|
| }
|
| <?xml version="1.0" encoding="UTF-8"?>
|
| <!-- ===================================================================== -->
| <!-- -->
| <!-- Sample TreeCache Service Configuration -->
| <!-- -->
| <!-- ===================================================================== -->
|
| <server>
|
| <classpath codebase="./lib" archives="jboss-cache.jar,
jgroups.jar"/>
|
|
| <!-- ====================================================================
-->
| <!-- Defines TreeCache configuration
-->
| <!-- ====================================================================
-->
|
| <mbean code="org.jboss.cache.TreeCache"
| name="jboss.cache:service=testTreeCache">
|
| <depends>jboss:service=Naming</depends>
| <depends>jboss:service=TransactionManager</depends>
| <attribute name="UseReplQueue">false</attribute>
| <attribute
name="TransactionManagerLookupClass">org.jboss.cache.DummyTransactionManagerLookup</attribute>
|
| <attribute
name="IsolationLevel">REPEATABLE_READ</attribute>
|
| <attribute name="CacheMode">LOCAL</attribute>
|
| <attribute
name="ClusterName">TreeCache-Cluster</attribute>
|
| <attribute
name="InitialStateRetrievalTimeout">20000</attribute>
|
| <attribute name="SyncReplTimeout">15000</attribute>
|
| <attribute
name="LockAcquisitionTimeout">10000</attribute>
|
| <attribute
name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
| <attribute name="EvictionPolicyConfig">
| <config>
| <attribute
name="wakeUpIntervalSeconds">5</attribute>
| <!-- Cache wide default -->
| <region name="/_default_">
| <attribute name="maxNodes">5000</attribute>
| <attribute
name="timeToLiveSeconds">5</attribute>
| </region>
| <region name="/org/jboss/data">
| <attribute name="maxNodes">5000</attribute>
| <attribute
name="timeToLiveSeconds">1000</attribute>
| </region>
| <region name="/test">
| <attribute name="maxNodes">5000</attribute>
| <attribute
name="timeToLiveSeconds">3</attribute>
| <attrubute
name="maxAgeSeconds">0</attrubute>>
| </region>
| </config>
| </attribute>
|
| <!--
| <attribute name="CacheLoaderConfiguration">
| <config>
| <passivation>true</passivation>
| <preload></preload>
| <cacheloader>
| <class>org.jboss.cache.loader.JDBCCacheLoader</class>
|
| <properties>
| cache.jdbc.table.name=jbosscache
| cache.jdbc.table.create=true
| cache.jdbc.table.drop=true
| cache.jdbc.table.primarykey=jbosscache_pk
| cache.jdbc.fqn.column=fqn
| cache.jdbc.fqn.type=char(255)
| cache.jdbc.node.column=node
| cache.jdbc.node.type=blob
| cache.jdbc.parent.column=parent
| cache.jdbc.driver=com.mysql.jdbc.Driver
| cache.jdbc.url=jdbc:mysql://localhost/Discuz
| cache.jdbc.user=root
| cache.jdbc.password=
| </properties>
| <async>false</async>
| <fetchPersistentState>false</fetchPersistentState>
| <ignoreModifications>false</ignoreModifications>
|
| <purgeOnStartup>false</purgeOnStartup>
| </cacheloader>
| </config>
| </attribute>
| -->
|
|
| <attribute name="CacheLoaderConfiguration">
| <config>
| <passivation>true</passivation>
|
| <shared>false</shared>
|
| <cacheloader>
|
<class>org.jboss.cache.loader.bdbje.BdbjeCacheLoader</class>
| <properties>
| location=c:/tmp/filetore1
| </properties>
| <async>false</async>
|
| <fetchPersistentState>false</fetchPersistentState>
| <ignoreModifications>false</ignoreModifications>
| <purgeOnStartup>false</purgeOnStartup>
| </cacheloader>
|
| </config>
| </attribute>
|
| </mbean>
|
|
| </server>
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3963090#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...