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개 답변
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
지원 엔지니어
답변함 2년 전
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
답변함 2년 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인