In order to know exactly how your application uses JCR, it can be interesting to register all the JCR API accesses in order to easily create real life test scenario based on pure JCR calls and also to tune your JCR to better fit your requirements.
In order to allow you to specify the configuration which part of JCR needs to be monitored without applying any changes in your code and/or building anything, choose to rely on the Load-time Weaving proposed by AspectJ.
To enable this feature, you will have to add the following jar files to your classpath:
exo.jcr.component.statistics-X.Y.Z.jar 
        corresponding to your eXo JCR version that you can get from the jboss
        maven repository https://repository.jboss.org/nexus/content/groups/public/org/exoplatform/jcr/exo.jcr.component.statistics.
aspectjrt-1.6.8.jar that you can get from the main maven
        repository http://repo2.maven.org/maven2/org/aspectj/aspectjrt.
You will also need to get aspectjweaver-1.6.8.jar  from the main
    maven repository http://repo2.maven.org/maven2/org/aspectj/aspectjweaver.
    At this stage, to enable the statistics on the JCR API accesses, you will
    need to add the JVM parameter
    -javaagent:${pathto}/aspectjweaver-1.6.8.jar to your
    command line. For more details, refer to http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html.
By default, the configuration will collect statistics on all the
    methods of the internal interfaces
    org.exoplatform.services.jcr.core.ExtendedSession and
    org.exoplatform.services.jcr.core.ExtendedNode, and
    the JCR API interface javax.jcr.Property. To add
    and/or remove some interfaces to/from monitor, you have two configuration files
    changed that are bundled into the exo.jcr.component.statistics-X.Y.Z.jar which includes
    conf/configuration.xml and META-INF/aop.xml.
The file content below is the content of
    conf/configuration.xml that you will need to modify
    to add and/or remove the full qualified name of the interfaces to monitor,
    into the list of parameter values of the init param called
    targetInterfaces.
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.exoplatform.org/xml/ns/kernel_1_2.xsd http://www.exoplatform.org/xml/ns/kernel_1_2.xsd"
xmlns="http://www.exoplatform.org/xml/ns/kernel_1_2.xsd">
<component>
<type>org.exoplatform.services.jcr.statistics.JCRAPIAspectConfig</type>
<init-params>
<values-param>
<name>targetInterfaces</name>
<value>org.exoplatform.services.jcr.core.ExtendedSession</value>
<value>org.exoplatform.services.jcr.core.ExtendedNode</value>
<value>javax.jcr.Property</value>
</values-param>
</init-params>
</component>
</configuration>
The file content below is the content of
    META-INF/aop.xml that you will need to modify to
    add and/or remove the full qualified name of the interfaces to monitor,
    into the expression filter of the pointcut called
    JCRAPIPointcut. As you can see below, by default only JCR API calls from the exoplatform packages are taken into account, do not
    hesitate to modify this filter to add your own package names.
<aspectj>
<aspects>
<concrete-aspect name="org.exoplatform.services.jcr.statistics.JCRAPIAspectImpl" extends="org.exoplatform.services.jcr.statistics.JCRAPIAspect">
<pointcut name="JCRAPIPointcut"
expression="(target(org.exoplatform.services.jcr.core.ExtendedSession) || target(org.exoplatform.services.jcr.core.ExtendedNode) || target(javax.jcr.Property)) && call(public * *(..))" />
</concrete-aspect>
</aspects>
<weaver options="-XnoInline">
<include within="org.exoplatform..*" />
</weaver>
</aspectj>
The corresponding CSV files are of the
    Statistics${interface-name}-${creation-timestamp}.csv type.
    See Statistics manager for more details about how the csv files are managed.
The format of each column header is ${method-alias}-${metric-alias}.
    The method alias will be of the ${method-name} type (a list of parameter types
    separated by semicolon (;) to be compatible with the CSV format).
The name of the category of statistics corresponding to these
    statistics is the simple name of the monitored interface (for example,
    ExtendedSession for org.exoplatform.services.jcr.core.ExtendedSession),
    this name is mostly needed to access the statistics through JMX.
This feature will affect the eXo JCR performance, so it is recommended you use this feature carefully.