One of the common performance tuning techniques employed by system administrators is to multi-path the disk I/O of an application. In the case of AEM, you can host java.io.tmpdir, the Node Store and the Data Store in three separate locations.
Java Temporary Folder
This is used heavily whenever an asset is uploaded to AEM. This can be controlled in the startup script with an argument such as this (Windows example):
AEM Data Store
This one requires more work.
1) Unpack the AEM jar file with the following command (assume that this is on the D: drive):
java -jar aem-22.214.171.12440515-generic.jar -unpack
2) Create a folder named “install" under /crx-quickstart
3) Copy the following files to it, as well as any service pack JARs (such as Service Pack 1). Ensure that you edit these so that it makes sense for your particular environment. More information on these files are available here.
Note: You might see the following WARNings in error.log due to this Apache Sling issue (it can be ignored and is fixed in later releases):
*WARN* [pool-5-thread-2] org.apache.sling.jcr.resource.internal.OakResourceListener processOsgiEventQueue: Resource at /var/classes/492f4fa1-dc1d-4879-a48d-b799620016e0/org/apache/jsp/libs/cq/gui/components/common/wcm/datasources/childpages/childpages_jsp.classtmp/jcr:content not found, which is not expected for an added or modified node
AEM “Dynamic Media” is the newly re-branded Adobe Scene7.
Introduced in AEM 6.0 GA, "Dynamic Imaging" (part of Dynamic Media which creates image renditions on demand) has been disabled (by default) in AEM 6.0 SP1.
Here are instructions on how to enable it. Please note that to deliver “dynamic media” to users, you would need an additional “Dynamic Media Add-on” license. You don’t need this license for authoring “dynamic media”.
If you try to enable it by setting the JCR property “dynamicMediaEnabled” to true in /etc/dam/dynamicmediaconfig, but forget the second important step of re-starting the OSGi bundle named “Adobe CQ DAM Scene7 Dynamic Imaging”, you’ll get the following exceptions in error.log when you ingest an asset (Windows example).
It is because the native code for dynamic imaging is only unpacked when the OSGi bundle is re-started.
*ERROR* [JobHandler: /etc/workflow/instances/2014-09-24/model_5997527878366:/content/dam/adobetest/IMG_0714.JPG/jcr:content/renditions/original] com.day.cq.dam.s7dam.onprem.util.RuntimeExec java.io.IOException: Cannot run program “D:\AEM\author\crx-quickstart\launchpad\felix\bundle312\data\image-server\is-home\bin64\ImageInfo.exe”: CreateProcess error=2, The system cannot find the file specified
*WARN* [JobHandler: /etc/workflow/instances/2014-09-24/model_5997527878366:/content/dam/adobetest/IMG_0714.JPG/jcr:content/renditions/original] com.day.cq.dam.s7dam.onprem.imagetools.ImageInfo ImageInfo.processFile failed with return: -101
*ERROR* [JobHandler: /etc/workflow/instances/2014-09-24/model_5997527878366:/content/dam/adobetest/IMG_0714.JPG/jcr:content/renditions/original] com.day.cq.dam.s7dam.onprem.process.S7damExtractImageInfoProcess Failed to extract s7dam image info for [IMG_0714.JPG]
If CQ/AEM is used to host a news website, a total system test must mimic a significant, international news event such as a political leader getting assassinated or a sovereign country invading another.
Here’s one protocol to follow - this testing is disruptive/destructive and therefore should only be conducted on cloned instances or STAGING instances that are backed up:
1) Using ToughDay, run a WCM workload against the “author” instances to mimic news editors feverishly creating and publishing new news content
4) Using a web load testing tool (NeoLoad, SOASTA, LoadRunner, SilkPerformer, WebLOAD, JMeter) load up the Dispatchers/”publish” instances with 100s of 1000s of page requests. In Adobe Managed Services, we use our internally developed tool Minions.
The above four operations should ideally be run concurrently from four separate remote instances, so that their network interfaces are not saturated.
The CQ/AEM system should NOT crash or become unavailable.
For cloud deployments, the four load generators should also be in the cloud - otherwise you’ll just end up saturating your own company’s network infrastructure (NAT, firewalls, VPN etc).