Archive for the ‘Uncategorized’ Category


AEM (Adobe CQ) Performance on different Hardware

March 29, 2013

The other day we ran into a bit of a problem because of storage speed in one of the environments we were setting up CQ5.5 in. It was a VMWare environment with 10GB of ram, 8 CPUs and lots of storage configured for it – however, the storage was configured over NFS. The performance of the storage was very poor until the team mounted the NFS storage on the host operating system and configured a vmdk file as storage for the VM. Now CQ is running fast and smooth.

CQ has a handy tool in the Felix Console to measure disk speed. If I run it on my own computer I get the following output (you can find it at http://localhost:4502/system/console/diskbenchmark , click start, wait for a couple of minutes and then hit stop):

Operation Type Operations Per Second for Block Sizes
256 B 512 B 1 KB 2 KB 4 KB 8 KB 16 KB
write 297 569 1105 2858 16175 15915 14990
read 290468 285605 276539 265199 245365 194254 125938
write 16654 16955 16485 16294 16280 15868 15232
read 289515 285575 274960 260759 246216 192033 126604
write 16687 16481 16507 16076 16243 15812 15494
read 288390 282803 273778 263346 241982 192439 123351
write 16609 16585 16484 16630 16418 15811 15149
read 287073 282856 272822 263683 242169 192894 126518
write 16477 16370 16294 16412 16225 16034 15048

Note: Java7, CQ5.5, Sony Vaio with Intel i7-3682CM @2.2GHz, Win8 wirth a hard disk performance index of 5.9

I ran the same test in AEM5.6, the numbers are about the same. The disk speed test does not test true repository speed but the actual speed of reading and writing files from java to the directory that is specified.

Well, I shared my numbers – please share yours (I’ll post more as well soon) – Would be great to get a nice long list of different servers, developer boxes, os’s, etc compiled here.

Some more numbers

MacBook Air 1.7GHz Intel Core i5, 60GB Solid State Disk
Operation Type Operations Per Second for Block Sizes
256 B 512 B 1 KB 2 KB 4 KB 8 KB 16 KB
write 5097 6752 10098 13113 14913 14868 14419
read 522298 498729 479957 444013 386557 283406 175218
write 15102 15159 14810 14671 15023 14763 14234
read 519715 496583 480427 443306 383299 281750 176323
write 13236 14569 14770 15120 14971 14816 14390
read 524098 498535 484440 442899 389182 284113 175112
write 15251 14893 14755 14784 15086 14784 14429
read 528208 502405 484314 442884 387000 284755 174811

Setting up a Clean Instance of CQ5.6 without the Samples

March 13, 2013

While installing CQ5.6 I found a log entry that sounded quite interesting:

SlingSettingsServiceImpl Active run modes: [ author, crx2, crx3mongo, samplecontent ]

apparently (not sure if this is new in CQ5.6) you can pass in a runmode during installation to trigger different features of CQ to be installed or not.

Running CQ the first time with these arguments will not install the geometrixx samples at all and to me seems to be the better approach than installing CQ first and then uninstalling the geometrixx samples as suggested in various places and the security guide for CQ.

java -jar cq.5.6.jar -r nosamplecontent

After this installation, your copy of CQ (AEM) will be almost clean of any geometrixx atrifacts (there are however some geometrixx-media users that are left over, they are probably not contained in the example geometrixx code.

Other Available Options

It seems the following options can be set for installation purposes (one from each row, if non is selected the first one is taken):

  • author | publish
  • crx2 | crx3
  • crx3mongo | crx3h2
  • samplecontent | nosamplecontent

I gave the crx3 | crx3mongo runmodes a try but did not really get a working version of AEM out of that combination – I am sure there will be some sort of documentation from Adobe about those features soon 🙂


Adobe CQ Meetup about migration from one CMS to another on March-20

February 24, 2013

Gaston Gonzales will present on different approaches to migrate content from a cms to CQ 5. If you are in the Orange County Area it should be worth while stopping by.

You can sign up for the meetup and see more information at


OC Adobe CQ/Sling/JCR User Group

September 28, 2012

For those of you who are in the Orange County/Los Angeles/San Diego area and are interested in Adobe CQ, Sling and JCR/Jackrabbit I wanted to point out that we are starting a user group. More information can be found at

We are meeting every first Wednesday of the Month from 6:30pm to 9pm at the Lake Forest/El Toro Public Library. They have a nice community room that we can use.

Our first speaker will be Andrew Khoury from Adobe – he will present on the topic of ‘CQ Performance Analysis : Optimizing Response Time‘.

Hope to see you there.


Touch Authoring Mode in CQ5.5

May 6, 2012

Since CQ5.4, communique supports a touch authoring mode. When you hit your site with either an iPhone or an iPad you will get a greatly different authoring experience in CQ. The login screen is still similar but when you hit the welcome screen you see a vastly different view:

As you can see above, the welcome screen features the ability to see your inbox and browse the content as well as some configuration tools for replication, workflows, could services and reports – all the features you want on a mobile device.

If you click on browse content you get a mobile tree explorer to navigate your sites and once you open a page, a slimmed down edit environment to review your site, make annotations, etc.

While this is all nice, the question that comes to mind is – is my current site I am working on supporting this feature? It’s a good idea to go and check if your templates still support this extra edit mode. I like to use the ‘user agent switcher’ plugin in firefox to switch my firefox to an iPhone mode and browse the authoring environment for a quick test.

To download the user agent switcher, go to


Using to parse Json Responses from Adobe CQ5.5

April 24, 2012 is a great little shell library that allows you to parse json responses from Adobe CQ. The following script is a simple example that pulls the current status of the installed, active and resolved bundles from the Felix System Console in Adobe CQ and presents the output. This can be used for example to check if the server is up and running. To use, download, put it in the same folder as this script and run it.

The supported arguments are the credentials (admin:admin) and the url to the server root (http://localhost:4502).  You should see a nice pink status line with the information on how many bundles are active, resolved and installed as well as an error code of  zero if the server is up and a -1 if the server is still starting up.

curl -s -u $1 $2/system/console > /dev/null
if [ $? != 0 ]; then
	echo admin console on $2 not running
	exit -1

. ./

DATA=`curl -s -u $1 $2/system/console/bundles/.json`

tickParse "$DATA"

#echo ``status``
#echo current status total bundles: ``s[0]``, installed bundles: ``s[1]``, installed fragments ``s[2]``, bundles resolved ``s[3]``, bundles installed ``s[4]``

if [ ``s[4]`` = 0 ]; then

	echo ``status``: server fully up
	exit 0
	echo -e "33[2A33[35m"
	echo -n ``status``: server still activating bundles
	echo -e "33[K33[0m"
	exit -1

Updated init script for CQ5.5

March 13, 2012

Jorg Hoh over at has a nice article on how to write an init script for cq5.4 – since CQ5.5 changed a bit on how it starts/stops cq, I figured I’ll post a new version of his script that’s cq5.5 compatible

# Provides: cq55
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start, stop adobe cq5.5
# Description: Start, stop adobe cq5.5



case "$1" in
su - ${CQ5_USER} ${START}
su - ${CQ5_USER} ${STOP}
su - ${CQ5_USER} ${STATUS}
echo "Unknown argument $1"

Replace CQROOT with the folder where you installed CQ, CQUSER with the user that you want to run CQ as. I also added a header for init script management into the script file. This will allow you to use update=rc.d on ubuntu or chkconfig on centos:

sudo update-rc.d -f cq55 remove

sudo chkconfig --del cq55

let me know what you think, any feedback is greatly appreciated