[jboss-user] [JBossCache] - :: JBossCache - Virtual Memory ::

BhaktavatsalamReddy do-not-reply at jboss.com
Wed Jul 25 13:09:55 EDT 2007


Hi,

I have a question on JBossCache- regarding virtual memory.
My Environment is:
Debian Linux
JBoss4.2.0GA - 
JBossCache that is bundled with JBoss4.2.0
Hibernate3.2.X
Ejb3.0.

When I use the JBossCache as second level cache, it is consuming lot of RAM as well as it is doing lots and lots of swaping., i., paging activitly.
I could see that on the Linux shell, that very little SWAP memory is left. I think SWAP is some kind of virtual memory. Whey is it doing that much of paging activity. When JVM exhausts it heap memory, it should have raised Out Of Memory Exception. Why is it doing much of SWAP?

Can any body let me know the best practices for treecache.xml configuration?

I am quite new to JBossCache.

Here is my TreeCache.xml 

?
  | <?xml version="1.0" encoding="UTF-8" ?>
  | <server>
  |   <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar" />
  |   
  |   <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=TreeCache">
  |     <depends>jboss:service=Naming</depends>
  |     <depends>jboss:service=TransactionManager</depends>
  | 
  |     <attribute name="TransactionManagerLookupClass">org.jboss.cache.JBossTransactionManagerLookup</attribute>
  | 	<attribute name="NodeLockingScheme">PESSIMISTIC</attribute>		
  |     <attribute name="IsolationLevel">NONE</attribute>
  | 
  |     <attribute name="CacheMode">LOCAL</attribute>
  |     
  |     <attribute name="UseInterceptorMbeans">false</attribute>
  | 
  |     <attribute name="LockAcquisitionTimeout">15000</attribute>
  | 
  |    <attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute>
  | 
  |     <attribute name="EvictionPolicyConfig">
  |       <config>
  |        <attribute name="wakeUpIntervalSeconds">5</attribute>
  |        <region name="/_default_">
  |          <attribute name="maxNodes">100</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  | 	   </region>
  |        <region name="/CompanyImpl">
  |          <attribute name="maxNodes">10</attribute>
  |          <attribute name="timeToLiveSeconds">3600</attribute>
  |          <attribute name="maxAgeSeconds">3600</attribute>
  |        </region>
  |        <region name="/LicenseImpl">
  |          <attribute name="maxNodes">20</attribute>
  |          <attribute name="timeToLiveSeconds">3600</attribute>
  |          <attribute name="maxAgeSeconds">3600</attribute>
  |        </region>
  |        <region name="/CompanyImpl.licenses">
  |          <attribute name="maxNodes">5</attribute>
  |          <attribute name="timeToLiveSeconds">3600</attribute>
  |          <attribute name="maxAgeSeconds">3600</attribute>
  |        </region>
  |        <region name="/LicenseImpl.accounts">
  |          <attribute name="maxNodes">100</attribute>
  |          <attribute name="timeToLiveSeconds">300</attribute>
  |          <attribute name="maxAgeSeconds">300</attribute>
  |        </region>
  |        <region name="/AccountImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">300</attribute>
  |          <attribute name="maxAgeSeconds">300</attribute>
  |        </region>
  |        <region name="/AccountImpl.folderList">
  |          <attribute name="maxNodes">1</attribute>
  |          <attribute name="timeToLiveSeconds">300</attribute>
  |          <attribute name="maxAgeSeconds">300</attribute>
  |        </region>
  |        <region name="/AccountAccessPlanImpl">
  |          <attribute name="maxNodes">10</attribute>
  |          <attribute name="timeToLiveSeconds">300</attribute>
  |          <attribute name="maxAgeSeconds">3600</attribute>
  |        </region>
  |        <region name="/EncoderImpl">
  |          <attribute name="maxNodes">50</attribute>
  |          <attribute name="timeToLiveSeconds">30</attribute>
  |          <attribute name="maxAgeSeconds">300</attribute>
  |        </region>
  |        <region name="/FolderImpl">
  |          <attribute name="maxNodes">500</attribute>
  |          <attribute name="timeToLiveSeconds">30</attribute>
  |          <attribute name="maxAgeSeconds">300</attribute>
  |        </region>
  |        <region name="/AssetMasterImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetMasterImpl.assets">
  |          <attribute name="maxNodes">25</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetMasterImpl.encodingRequestImplList">
  |          <attribute name="maxNodes">25</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>       
  |        <region name="/AssetImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">30</attribute>
  |          <attribute name="maxAgeSeconds">60</attribute>
  |        </region>
  |        <region name="/AccountAttributeImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetMasterAttributeImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetAttributeImpl">
  |          <attribute name="maxNodes">1000</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AccountImpl.attributeList">
  |          <attribute name="maxNodes">30</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetMasterImpl.attributeList">
  |          <attribute name="maxNodes">30</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |        <region name="/AssetImpl.attributeList">
  |          <attribute name="maxNodes">30</attribute>
  |          <attribute name="timeToLiveSeconds">10</attribute>
  |          <attribute name="maxAgeSeconds">30</attribute>
  |        </region>
  |       </config>
  |     </attribute>
  | 	<!--<attribute name="FetchInMemoryState">true</attribute>-->
  | 	<!-- <attribute name="CacheLoaderConfiguration">
  | 		<config>
  | 			<passivation>false</passivation>
  | 			<preload>/some/stuff</preload>
  | 			<cacheloader>
  | 				<class>org.jboss.cache.loader.JDBCCacheLoader</class>
  | 				same as the old CacheLoaderConfig attribute 
  | 				<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=varchar(255)
  | 					cache.jdbc.node.column=node
  | 					cache.jdbc.node.type=bytea
  | 					cache.jdbc.parent.column=parent
  | 					cache.jdbc.parent.type=varchar(255)
  | 					cache.jdbc.datasource=java:/treeCacheDS
  | 					cache.jdbc.driver=oracle.jdbc.OracleDriver
  | 					cache.jdbc.url=jdbc:oracle:thin:@localhost:1521:JBOSSDB
  | 					cache.jdbc.user=SCOTT
  | 					cache.jdbc.password=TIGER
  | 				</properties>
  | 
  | 				 whether the cache loader writes are asynchronous 
  | 					There is always the possibility of dirty reads since all writes are performed asynchronously,
  | 					and it is thus impossible to guarantee when (and even if) a write succeeds	
  | 				
  | 				<async>false</async>
  | 				 only one cache loader in the chain may set fetchPersistentState to true.
  | 				An exception is thrown if more than one cache loader sets this to true. 
  | 				<fetchPersistentState>true</fetchPersistentState>
  | 
  | 				 determines whether this cache loader ignores writes - defaults to false. 
  | 				<ignoreModifications>false</ignoreModifications>
  | 			</cacheloader>
  | 		</config>
  | 	</attribute>-->
  |   </mbean>
  | </server>
  | 

Thanks in advance,
Bhakta

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4067514#4067514

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4067514



More information about the jboss-user mailing list