AEM_Basics of Performance Common issues and how to prevent them


AreaSymptom(s)To increase capacity...To reduce volume...
ClientHigh client CPU usage.Install a client CPU with higher performance.Simplify (HTML) layout.
 Low server CPU usage.Upgrade to a faster browser.Improve client-side cache.
 Some clients fast, some slow.  
Server   
NetworkCPU usage low on both servers and clients.Remove any network bottlenecks.Improve/optimize the configuration of the client cache.
 Browsing locally on the server is (comparatively) fast.Increase network bandwidth.Reduce the "weight" of your web pages (e.g. less images, optimized HTML).
Web-serverCPU usage on the web-server is high.Cluster your web-servers.Reduce the hits per page (visit).
  Use a hardware load-balancer. 
ApplicationServer CPU usage is high.Cluster your CQ5 instances.Search for, and eliminate, CPU and memory hogs (use code review, timing output, etc).
 High memory consumption. Improve caching on all levels.
 Low response times. Optimize templates and components (e.g. structure, logic).
Repository   
Cache   
  • Performance issues may stem from a number of causes that have nothing to do with your website, 
  • including temporary slowdowns in connection speed, CPU load, and many more.
  • It may also impact either all your visitors, or only a subset of them.
  • All this information needs to be obtained, sorted and analyzed before you can either optimize the general performance or solve specific issues.
  • Before you experience a performance issue:
    • collect as much information as possible to build up a good working knowledge of the system under normal circumstances
  • When you experience a performance issue:
    • try to replicate it with one (or preferably more) standard web-browsers, on a different client that you know has good general performance and/or on the server itself (if possible)
    • check whether anything (related to the system) has changed within an appropriate time-space, and if any of these changes could have impacted the performance
    • ask questions such as:
      • does the issue only occur at specific times?
      • does the issue only occur on specific pages?
      • are other requests impacted?
    • collect as much information as possible to compare with your knowledge of the system under normal circumstances:

AEM_How to find requests with long duration times

Solution:
§  AEM includes the rlog.jar file in the below path:  /crx-quickstart/opt/helpers
§  It is used to find requests with long duration times
The following command shows the possible arguments of rlog.jar file
$java -jar rlog.jar
Request Log Analyzer Version 21584 Copyright 2005 Day Management AG
Usage:
  java -jar rlog.jar [options]
Options:
  -h               Prints this usage.
  -n   Limits output to lines.
  -m Limits input to requests.
  -xdev            Exclude POST request to CRXDE.

For example, you can run it specifying request.log file as a parameter and show the 10 first requests that have the longest duration:

$ java -jar ../opt/helpers/rlog.jar -n 10 request.log

Trace results :

*Info * Parsed 464 requests.
*Info * Time for parsing: 22ms
*Info * Time for sorting: 2ms
*Info * Total Memory: 1mb
*Info * Free Memory: 1mb
*Info * Used Memory: 0mb
------------------------------------------------------
18051ms 31/Mar/2009:11:15:34 +0200 200 GET /content/geometrixx/en/company.html text/ html
2198ms 31/Mar/2009:11:15:20 +0200 200 GET /libs/cq/widgets.js application/x-javascript
1981ms 31/Mar/2009:11:15:11 +0200 200 GET /libs/wcm/content/welcome.html text/html
1973ms 31/Mar/2009:11:15:52 +0200 200 GET /content/campaigns/geometrixx.teasers..html text/htm
1883ms 31/Mar/2009:11:15:20 +0200 200 GET /libs/security/cq-security.js application/x-javascript
1876ms 31/Mar/2009:11:15:20 +0200 200 GET /libs/tagging/widgets.js application/x-javascript
1869ms 31/Mar/2009:11:15:20 +0200 200 GET /libs/tagging/widgets/themes/default.js application/x-javascript
1729ms 30/Mar/2009:16:45:56 +0200 200 GET /libs/wcm/content/welcome.html text/html; charset=utf-8
1510ms 31/Mar/2009:11:15:34 +0200 200 GET /bin/wcm/contentfinder/asset/view.json/ content/dam?_dc=1238490934657&query=&mimeType=image&_charset_=utf-8 application/json
1462ms 30/Mar/2009:17:23:08 +0200 200 GET /libs/wcm/content/welcome.html text

Apache_bench marking tool_to identify the HTTP server performance along with AEM server Laod testing

Solution :


  • ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. 
  • It is designed to give you an impression of how your current Apache installation performs. 
  • This especially shows you how many requests per second your Apache installation is capable of serving.
  • To minimize the impact of  garbage collection, etc, it is recommended to use a tool such as apachebench 
  • To help identify memory leaks and selectively analyze response time.
Apache Bench can be used in the following way:

this is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/T
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Day-Servlet-Engine/4.1.52
Server Hostname: localhost
Server Port: 4503
Document Path: /content/geometrixx/en/company.html
Document Length: 24127 bytes
Concurrency Level: 5
Time taken for tests: 69.766 seconds
Complete requests: 1000
Failed requests: 998
(Connect: 0, Receive: 0, Length: 998, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 24160923 bytes
HTML transferred: 24010923 bytes
Requests per second: 14.33 /sec (mean)
Time per request: 348.828 [ms] (mean)
Time per request: 69.766 [ms] (mean, across all concurrent requests)
Transfer rate: 338.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 3.9 0 58
Processing: 138 347 568.5 282 8106
Waiting: 137 344 568.1 281 8106
Total: 139 348 568.4 283 8106
Percentage of the requests served within a certain time (ms)
50% 283
66% 323
75% 356
80% 374
90% 439
95% 512
98% 1047
99% 1132
100% 8106 (longest request)
  • apachebench also displays the time per request as the mean, across all concurrent requests;
see Time per request: 54.595 [ms] (mean, across all concurrent requests). 
  • You can change the value of the concurrency parameter -c(number of multiple requests to perform at a time) to see any effects.
Command details :


-c concurrency
Number of multiple requests to perform at a time. 
Default is one request at a time.
     -k
Enable the HTTP KeepAlive feature, i.e., perform multiple requests within one HTTP session. Default is no KeepAlive.
     -n requests
Number of requests to perform for the benchmarking session. The default is to just perform a single request which usually leads to non-representative benchmarking results.

Reference : http://httpd.apache.org/docs/2.2/programs/ab.html