Troubleshooting high CPU usage and timeout errors in Adobe Experience Manager 6.5 Publish instances

This article provides guidance for resolving high CPU usage and timeout errors in Adobe Experience Manager (AEM) 6.5 Publish environments. The root causes include repeated requests to missing resources, backend integration failures, and inefficient error page handling.

Description description

Environment

Adobe Experience Manager 6.5.x (on-premises)

Symptoms

  • High CPU utilization on AEM Publish instances
  • Timeout errors for end users accessing published sites
  • Repeated requests for missing resources (e.g. missing stylesheets or web fonts), often from bots or crawlers
  • Custom error page rendering failures, resulting in large error logs and expensive error handling
  • Repeated failures to retrieve product data from backend systems, with log entries such as: No product data received from backend
  • Memory pressure on Publish instances, with increasing memory usage and long garbage collection (GC) pauses
  • Large error.log files (e.g., hundreds of MB in a few hours)
  • Request logging not capturing response times, making it difficult to correlate slow requests

Cause

High CPU and timeout errors are primarily caused by:

  • Repeated requests to missing resources, generating excessive 404 errors
  • Inefficient custom error page handling that triggers exceptions and stack traces for each missing resource
  • Backend integration failures leading to repeated data retrieval attempts
  • Memory pressure due to high error volume and inefficient cache usage

Resolution resolution

Follow the steps below to resolve the issue:

  1. Identify and restore missing static resources:

    • Review the site templates and content for references to missing files, such as stylesheets or web fonts.
    • Restore all required resources to the correct location in the repository or file system.
    • If the resources are obsolete, remove their references from the templates and content to prevent repeated 404 Not Found errors.
  2. Correct the custom error page rendering:

    • Verify that the custom error page module initializes correctly after server restarts.
    • Confirm that the custom error page returns lightweight responses for missing resources without generating full stack traces or exceptions.
  3. Investigate backend integration failures:

    • Review the backend system logs for errors or delays when responding to product data requests.
    • Work with the backend teams to address connectivity or data retrieval issues.
    • Review how frequently product cache-clearing jobs run and reduce their frequency, if possible, to decrease the load on backend systems.
  4. Monitor and address memory pressure:

    • Monitor memory usage and garbage collection activity on the affected Publish instances.
    • Perform memory profiling to identify potential memory leaks or excessive object retention.
    • If necessary, adjust cache sizes or review custom code for memory inefficiencies.
  5. Improve request logging by enabling or configuring request logs to capture response times. Use this information to correlate requests with performance issues.

  6. After implementing the changes, monitor CPU utilization, memory usage, and error rates to verify that performance improves.

  7. If the issue persists, collect and analyze new log files that cover the affected timeframes.

recommendation-more-help
experience-cloud-kcs-help-kbarticles