Aurora Serverless - ACU utilisation is high when no active database connection

0

Enter image description here I have migrated from Aurora Provisioned (t3.medium) to Aurora Serverless (0.5 to 4 ACU) to save cost since our load is scheduled. I was trying in the dev environment to know whether this is working fine for our use case and is cost-effective. But this costs us a lot when compared to Aurora provisioned t3.medium instance.

Refer to the diagram. The metric shows the average taken for 1 hour. Even though there are no database connections, ACU utilization is high.

Could anyone explain to me why utilization is high?

2 Answers
1

Please note, each ACU is a combination of approximately 2 gibibytes (GiB) of memory, corresponding CPU, and networking.

Aurora continuously tracks utilization of resources such as CPU, memory, and network. These measurements collectively are called the load. The load includes the database operations performed by your application. Additionally, it also includes background processing for the database server and Aurora administrative tasks. Hence, when capacity is constrained by any of these, Aurora Serverless v2 scales up.

Currently, Aurora Serverless v2 writers and readers don't scale all the way down to zero ACUs. Idle Aurora Serverless v2 writers and readers can scale down to the minimum ACU value that you specified for the cluster. However, considering the background processing & administrative tasks running at back end may cause serverless instance not scale down to the minimum ACU of 0.5. Additionally, if the cluster is enabled with performance insight, then we recommend to configure minimum capacity to 2 ACUs. Therefore, the observation of ACUUtilization being utilized with no database connections is an expected behavior, as Aurora needs to perform the administrative tasks.

AWS
SUPPORT ENGINEER
answered a year ago
1

Yes, Aurora serveless is expensive compared to provisioned configuration. Also note that it is not a cost effective solution for scheduled workloads. Aurora Serverless v2 is intended for variable or "spiky" workloads. With such unpredictable workloads, you might have difficulty planning when to change your database capacity. You might also have trouble making capacity changes quickly enough using the familiar mechanisms such as adding DB instances or changing DB instance classes.

So for your use case I suggest use the provisioned configuration and setup a scheduled startup script to start the instance before your workload start time and another script to shutdown the instance after your workload ends. While the instance is stopped state you don't get charged for compute usage. For additional savings you can consider using reserved instances; https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_WorkingWithReservedDBInstances.html

Joseph
answered a year ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions