Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Evaluasi pengaturan penskalaan otomatis tabel DynamoDB Anda
Bagian ini memberikan gambaran umum tentang cara mengevaluasi pengaturan penskalaan otomatis pada tabel DynamoDB Anda. Amazon DynamoDB auto scaling adalah fitur yang mengelola tabel dan throughput GSI indeks sekunder global () berdasarkan lalu lintas aplikasi dan metrik pemanfaatan target Anda. Ini memastikan tabel Anda atau GSIs akan memiliki kapasitas yang diperlukan untuk pola aplikasi Anda.
Layanan penskalaan AWS otomatis akan memantau pemanfaatan tabel Anda saat ini dan membandingkannya dengan nilai pemanfaatan target:. TargetValue
Fitur ini akan memberi tahu Anda jika sudah waktunya untuk menambah atau mengurangi kapasitas yang dialokasikan.
Topik
Memahami pengaturan penskalaan otomatis Anda
Mendefinisikan nilai yang benar untuk pemanfaatan target, langkah awal, dan nilai akhir adalah aktivitas yang memerlukan keterlibatan dari tim operasi Anda. Hal ini memungkinkan Anda untuk menentukan nilai dengan benar berdasarkan penggunaan aplikasi historis, yang akan digunakan untuk memicu kebijakan penskalaan otomatis AWS . Pemanfaatan target adalah persentase total kapasitas yang perlu dicapai selama jangka waktu tertentu sebelum aturan penskalaan otomatis berlaku.
Ketika Anda menetapkan pemanfaatan target yang tinggi (target sekitar 90%), artinya lalu lintas Anda harus lebih tinggi dari 90% untuk jangka waktu tertentu sebelum penskalaan otomatis dimulai. Jangan menggunakan pemanfaatan target yang tinggi kecuali aplikasi Anda sangat konstan dan tidak menerima lonjakan lalu lintas.
Ketika Anda menetapkan pemanfaatan yang sangat rendah (target kurang dari 50%), artinya aplikasi Anda harus mencapai 50% dari kapasitas yang disediakan sebelum memicu kebijakan penskalaan otomatis. Kecuali lalu lintas aplikasi Anda tumbuh pada tingkat yang sangat agresif, ini biasanya diterjemahkan ke dalam kapasitas yang tidak terpakai dan sumber daya yang terbuang.
Cara mengidentifikasi tabel dengan pemanfaatan target rendah (<= 50%)
Anda dapat menggunakan AWS CLI atau AWS Management Console untuk memantau dan mengidentifikasi kebijakan penskalaan otomatis di sumber daya DynamoDB Anda: TargetValues
Jika nilai pemanfaatan target Anda kurang dari atau sama dengan 50%, Anda harus mempelajari metrik pemanfaatan tabel Anda untuk mengetahui apakah nilai tersebut kurang tersedia atau disediakan secara berlebihan.
Cara mengatasi beban kerja dengan varian musiman
Pertimbangkan skenario berikut: aplikasi Anda sering kali beroperasi di bawah nilai rata-rata minimum, tetapi pemanfaatan targetnya rendah sehingga aplikasi Anda dapat bereaksi dengan cepat terhadap peristiwa yang terjadi pada jam-jam tertentu dalam sehari dan Anda memiliki kapasitas yang memadai serta menghindari throttling. Skenario ini umum terjadi ketika Anda memiliki aplikasi yang sangat sibuk selama jam kantor normal (9 pagi hingga 5 sore) tetapi kemudian berfungsi pada tingkat dasar setelah jam kerja. Karena beberapa pengguna akan mulai terhubung sebelum jam 9 pagi, aplikasi menggunakan ambang batas rendah ini untuk meningkatkan dengan cepat guna mencapai kapasitas yang diperlukan selama jam sibuk.
Skenario ini akan seperti berikut:
-
Antara jam 5 sore dan 9 pagi
ConsumedWriteCapacity
unit tetap berada di antara 90 dan 100 -
Pengguna mulai terhubung ke aplikasi sebelum jam 9 pagi dan unit kapasitas meningkat pesat (nilai maksimum yang Anda lihat adalah 1500WCU)
-
Rata-rata, penggunaan aplikasi Anda berkisar antara 800 hingga 1200 selama jam kerja
Jika skenario sebelumnya berlaku untuk Anda, sebaiknya gunakan penskalaan otomatis terjadwal, yaitu tabel Anda masih dapat mengonfigurasi aturan penskalaan otomatis aplikasi, tetapi dengan pemanfaatan target yang kurang agresif yang hanya menyediakan kapasitas tambahan pada interval tertentu yang Anda perlukan.
Anda dapat menggunakan AWS CLI untuk menjalankan langkah-langkah berikut untuk membuat aturan penskalaan otomatis terjadwal yang akan dijalankan berdasarkan waktu hari dan hari dalam seminggu.
-
Daftarkan tabel DynamoDB Anda GSI atau sebagai target yang dapat diskalakan dengan. Application Auto Scaling Target yang dapat diskalakan adalah sumber daya yang skalanya dapat diperkecil atau diperbesar oleh Application Auto Scaling .
aws application-autoscaling register-scalable-target \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --min-capacity 90 \ --max-capacity 1500
-
Siapkan tindakan terjadwal sesuai dengan kebutuhan Anda.
Kita akan membutuhkan dua aturan untuk mencakup skenario: satu untuk meningkatkan skala dan satu lagi untuk menurunkan skala. Aturan pertama untuk meningkatkan skala tindakan terjadwal:
aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-8-5-scheduled-action \ --scalable-target-action MinCapacity=800,MaxCapacity=1500 \ --schedule "cron(45 8 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"
Aturan kedua untuk menurunkan skala tindakan terjadwal:
aws application-autoscaling put-scheduled-action \ --service-namespace dynamodb \ --scalable-dimension dynamodb:table:WriteCapacityUnits \ --resource-id table/<table-name> \ --scheduled-action-name my-5-8-scheduled-down-action \ --scalable-target-action MinCapacity=90,MaxCapacity=1500 \ --schedule "cron(15 17 ? * MON-FRI *)" \ --timezone "Australia/Brisbane"
-
Jalankan perintah berikut untuk memvalidasi bahwa kedua aturan telah diaktifkan:
aws application-autoscaling describe-scheduled-actions --service-namespace dynamodb
Anda akan mendapatkan hasil seperti ini:
{ "ScheduledActions": [ { "ScheduledActionName": "my-5-8-scheduled-down-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-5-8-scheduled-down-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(15 17 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 90, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:30:25.100000+10:00" }, { "ScheduledActionName": "my-8-5-scheduled-action", "ScheduledActionARN": "arn:aws:autoscaling:<region>:<account>:scheduledAction:<uuid>:resource/dynamodb/table/<table-name>:scheduledActionName/my-8-5-scheduled-action", "ServiceNamespace": "dynamodb", "Schedule": "cron(45 8 ? * MON-FRI *)", "Timezone": "Australia/Brisbane", "ResourceId": "table/<table-name>", "ScalableDimension": "dynamodb:table:WriteCapacityUnits", "ScalableTargetAction": { "MinCapacity": 800, "MaxCapacity": 1500 }, "CreationTime": "2022-03-15T17:28:57.816000+10:00" } ] }
Gambar berikut menunjukkan beban kerja sampel yang selalu mempertahankan pemanfaatan target 70%. Perhatikan bagaimana aturan penskalaan otomatis masih tetap diterapkan dan throughput tidak akan berkurang.
Memperbesar, kita dapat melihat ada lonjakan dalam aplikasi yang memicu ambang batas penskalaan otomatis 70%, memaksa penskalaan otomatis untuk masuk dan memberikan kapasitas ekstra yang diperlukan untuk tabel. Tindakan penskalaan otomatis terjadwal akan memengaruhi nilai maksimum dan minimum, dan Anda bertanggung jawab untuk mengaturnya.
Cara mengatasi lonjakan beban kerja dengan pola yang tidak diketahui
Dalam skenario ini, aplikasi menggunakan pemanfaatan target yang sangat rendah karena Anda belum mengetahui pola aplikasi, dan Anda ingin memastikan beban kerja Anda tidak mengalami throttling.
Sebaiknya gunakan mode kapasitas sesuai permintaan. Tabel sesuai permintaan sangat cocok untuk lonjakan beban kerja yang tidak Anda ketahui pola lalu lintasnya. Dengan mode kapasitas sesuai permintaan, Anda membayar per permintaan atas pembacaan dan penulisan data yang dilakukan aplikasi Anda pada tabel Anda. Anda tidak perlu menentukan berapa banyak throughput baca dan tulis yang Anda harapkan untuk dijalankan oleh aplikasi Anda, karena DynamoDB langsung mengakomodasi beban kerja Anda saat beban kerja tersebut naik atau turun.
Cara mengatasi beban kerja dengan aplikasi tertaut
Dalam skenario ini, aplikasi bergantung pada sistem lain, seperti skenario pemrosesan batch yang dapat menghasilkan lonjakan besar dalam lalu lintas sesuai dengan peristiwa dalam logika aplikasi.
Pertimbangkan untuk mengembangkan logika penskalaan otomatis khusus yang bereaksi terhadap peristiwa tersebut saat Anda dapat meningkatkan TargetValues
dan kapasitas tabel bergantung pada kebutuhan spesifik Anda. Anda bisa mendapatkan keuntungan dari Amazon EventBridge dan menggunakan kombinasi AWS layanan seperti Lambda dan Step Functions untuk menanggapi kebutuhan aplikasi spesifik Anda.