JBoss.orgCommunity Documentation

Chapter 43. JCR Performance Tuning Guide

43.1. Introduction
43.2. JCR Performance and Scalability
43.2.1. Cluster configuration
43.2.2. JCR Clustered Performance
43.3. Performance Tuning Guide
43.3.1. JBoss AS Tuning
43.3.2. JCR Cache Tuning
43.3.3. Clustering

This guide will show you possible ways of improving JCR performance.

It is intended to GateIn Administrators and those who wants to use JCR features.

For performance it is better to have loadbalacer, DB server and shared NFS on different computers. If in some reasons you see that one node gets more load than others you can decrease this load using load value in load balancer.

JGroups configuration

It's recommended to use "multiplexer stack" feature present in JGroups. It is set by default in eXo JCR and offers higher performance in cluster, using less network connections also. If there are two or more clusters in your network, please check that they use different ports and different cluster names.

Write performance in cluster

Exo JCR implementation uses Lucene indexing engine to provide search capabilities. But Lucene brings some limitations for write operations: it can perform indexing only in one thread. Thats why write performance in cluster is not higher than in singleton environment. Data is indexed on coordinator node, so increasing write-load on cluster may lead to ReplicationTimeout exception. It occurs because writing threads queue in the indexer and under high load timeout for replication to coordinator will be exceeded.

Taking in consideration this fact, it is recommended to exceed replTimeout value in cache configurations in case of high write-load.

Replication timeout

Some operations may take too much time. So if you get ReplicationTimeoutException try increasing replication timeout:

   <clustering mode="replication" clusterName="${jbosscache-cluster-name}">
      ...
      <sync replTimeout="60000" />
   </clustering>

value is set in miliseconds.