Expand my Community achievements bar.

SOLVED

Connection Pooling in AEM

Avatar

Level 6

Hi Everyone,

 

We have implemented connection pooling in AEM and the same is working fine.

 

Currently we have provided the connection number as 10.

 

We have 8 publishers and 8 dispatchers in Production and our home page is having few APIs that will get responses from Database,

 

During some events, there are approximately 24000 users logging into the site.

 

Do you have any idea, what can be the number of connections we can configure in connection pooling in these kind of scenarios.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

Generally Adobe - AMS provide New Relic monitoring - please check with your AMS or Adobe Support.

 

NewRelic

Dynatrace

JMeter (open source)

 

above are few different tools available,

New Relic: New Relic is a powerful application performance monitoring tool that can provide insights into your AEM server's performance, including JVM metrics, thread dumps, and connection pool usage.

Dynatrace: Dynatrace is another comprehensive application performance monitoring tool that provides deep insights into your application's performance. It can monitor connection pool usage, thread activity, and much more.

JMeter: Apache JMeter is a popular open-source tool for load testing. You can use it to simulate heavy loads on your AEM server and see how it performs under stress.

View solution in original post

5 Replies

Avatar

Level 10

Given your scenario with approximately 24,000 users logging into the site during events, along with multiple publishers and dispatchers, you may need to increase the number of connections in your connection pooling configuration to ensure adequate capacity during peak loads. However, it's essential to balance this with the capabilities of your database server(s) and the overall performance of your AEM application.
let's assume:

  • Expected concurrency level: 100 simultaneous database connections
  • Maximum connections per pool: 50

Number of connection pools required = Expected concurrency level / Maximum connections per pool Number of connection pools required = 100 / 50 = 2

So, in this example, you would need at least 2 connection pools to support 100 simultaneous database connections.

Keep in mind that this is a simplified calculation, and in a real-world scenario, you might need to adjust based on factors such as peak loads, database performance, and application architecture.
Start by reviewing your database server's capacity and performance metrics under load, then gradually increase the number of connections in your connection pooling configuration while monitoring system performance and resource utilization. Perform load testing to validate the effectiveness of your configuration adjustments and ensure that your AEM application can handle peak loads efficiently without impacting performance or causing resource contention issues.

Avatar

Level 6

Hi @Imran__Khan ,

 

Thanks for the details.

We are using 3 databases for connection pooling, so 3 different configurations were created.

In this also, 2 are going to the secondary node of DB and one is going to the primary node by providing read intent.

 

Avatar

Community Advisor

Consider checking logs and thread dumps for any long waiting threads - connection pooling.

Are you using any tool to monitor your connection pool usage.

This can help you see how many connections are being used at peak times and whether your application is frequently waiting for a connection to become available.

Avatar

Level 6

Hi @SureshDhulipudi ,

 

We are yet to push changes to higher environments, Can you suggest any good tool to monitor connection pool usage?

Avatar

Correct answer by
Community Advisor

Generally Adobe - AMS provide New Relic monitoring - please check with your AMS or Adobe Support.

 

NewRelic

Dynatrace

JMeter (open source)

 

above are few different tools available,

New Relic: New Relic is a powerful application performance monitoring tool that can provide insights into your AEM server's performance, including JVM metrics, thread dumps, and connection pool usage.

Dynatrace: Dynatrace is another comprehensive application performance monitoring tool that provides deep insights into your application's performance. It can monitor connection pool usage, thread activity, and much more.

JMeter: Apache JMeter is a popular open-source tool for load testing. You can use it to simulate heavy loads on your AEM server and see how it performs under stress.