Business

Top Backend Challenges Causing AEM Performance Issues

Since AEM is a complex content management system, you need to make sure your frontend and backend are equally well programmed for optimal web performance. Our previous article highlighted top website page performance issues on frontend. Now, we’d like to take a look at AEM performance issues on the backend which you should definitely avoid.

Issue # 1

Server and Virtual Machine Configuration

Incorrect configuration for CPU and memory resources can negatively impact your website performance. AEM is an impressively complicated system of interoperable components. It’s almost inevitable that some components work efficiently and others lag. If you find AEM backend performance bottlenecks, you can see this as an opportunity to improve the overall site performance. Start by monitoring CPU and memory spikes for guidance as to what needs adjustment for AEM performance tuning. You can use Felix HealthCheck or Adobe’s NewRelic, as two examples, to detect and prevent web performance hiccups.

Issue # 2

JCR Repository Usage

JCR (Java Content Repository) is used to access web contents and other hierarchically stored data in AEM. The JCR data structure is similar to a document tree with nodes and data. One of the best practices is to create indexes for fast data retrieval from the repository. One of AEM performance issues lies in creating big full-text indexes throughout several properties, which ultimately leads to cluttered and incoherent content architecture. Neglecting to examine the queries in AEM backend can therefore result in significant performance issues. There may be popular queries lacking index coverage, for example.

Even with index coverage in place, there’s a chance that indexes get corrupted, which leads to AEM performance issues. Whenever any suspicion of corruption arises, you should reindex queries manually.

Issue # 3

Lack of Proper Maintenance

AEM performance issues on the backend can be caused by the files overfilled with chaotic data entries, causing website speed to lag – they need to be compacted regularly and checked for garbage. AEM developers should give careful consideration as to whether they need content versions in an AEM repository. If ignored, those resource versions are going to consume a lot of storage space. The same thing is applicable to audit logs that keep your history of changes.

Don’t let your backend go south. Get the best practices in free AEM performance workshop.

Issue # 4

HTTP Caching

AEM performance issues on the backend can be caused by the absence of proper caching. Unless you implement a thorough caching strategy, you can shake up web performance and server load. The wrong caching can result in displaying outdated content to users, which can negatively impact their experience. Another problem is that inaccurate caching makes users see inconsistent versions of a web page. Additionally, not paying due diligence to caching responses can slow down website performance. Avoid excessive use of URLs that come with query parameters. Requests to parameterized URLs bypass caching by default, and it can be pretty tricky to make them respect it. Think of using Sling selectors and suffixes as an alternative.

Issue # 5

Runtime AEM Configuration

Runtime AEM configuration is usually OSGi-based and lets you change certain aspects of Adobe Experience Manager instances while they’re still running without requiring a restart or app redeployment. This means you can make configuration changes on the fly without disrupting the availability of the application. Runtime configuration can include changes to log levels, debugging settings, database connections, cache settings, and other aspects of an AEM environment. It can also include changes to the application’s behavior, such as enabling or disabling specific features or modules.

Problems in AEM backend with runtime AEM configuration include:

  • Failure to disable unused bundles, components, and functionalities
  • No eviction policy and/or disk swapping if you’re using in-memory cache(s) like Guava’s or EhCache
  • Loggers in production instances are not properly configured so that they store lots of non-error messages and do not focus on the actual warnings and errors
  • Inadequate backup and disaster recovery procedures or their absence
  • Badly managed and purged workflow instances according to their status and age
  • Overuse of runtime persistence that consumes valuable resources and reduces application performance
  • Overuse of runtime persistence that consumes valuable resources and reduces application performance
  • Failure to manage activation and rollout jobs which can result in an accumulation of stalled jobs causing AEM performance issues

Brush up your backend to mitigate AEM performance issues.

Issue # 6

Ignoring the Best Programming Practices

AEM performance issues can be provoked by the lack of AEM coding experience among developers. There are several stumbling blocks for rookie programmers, such as:

  • Using AEM instead of separate microservices platforms for massive data writes or updates. For instance, user profiles, user reactions, or bookmarking.
  • Using @Inject/ instead of specific injector annotations like @ValueMapValue when leveraging Sling models.
  • Putting too many separate components onto a single page which leads to poor web performance in the authoring mode.
  • Stuffing the entire initialization logic into backend page rendering process which doesn’t help support progressing page loading, while also dragging the website performance down.
  • Opening more resources (connections, sessions) than needed; and not closing those opened resources as soon as they are no longer in use.

Most Common AEM Performance Issues on Backend

The AEM performance issues we just went through are the most common bottlenecks in the development process. Knowing these issues and addressing them appropriately can save you time and budget. Make sure your development team is aware of the problems on the backend and can tune and fix everything with precision and accuracy.