Memantau konkurensi - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memantau konkurensi

Lambda memancarkan metrik CloudWatch Amazon untuk membantu Anda memantau konkurensi fungsi Anda. Topik ini menjelaskan metrik ini dan cara menafsirkannya.

Metrik konkurensi umum

Gunakan metrik berikut untuk memantau konkurensi fungsi Lambda Anda. Granularitas untuk setiap metrik adalah 1 menit.

  • ConcurrentExecutions— Jumlah pemanggilan bersamaan aktif pada titik waktu tertentu. Lambda memancarkan metrik ini untuk semua fungsi, versi, dan alias. Untuk fungsi apa pun di konsol Lambda, Lambda menampilkan grafik ConcurrentExecutions secara native di tab Pemantauan, di bawah Metrik. Lihat metrik ini menggunakan MAX.

  • UnreservedConcurrentExecutions— Jumlah pemanggilan bersamaan aktif yang menggunakan konkurensi tanpa syarat. Lambda memancarkan metrik ini di semua fungsi di suatu wilayah. Lihat metrik ini menggunakan MAX.

  • ClaimedAccountConcurrency— Jumlah konkurensi yang tidak tersedia untuk pemanggilan sesuai permintaan. ClaimedAccountConcurrencysama dengan UnreservedConcurrentExecutions ditambah jumlah konkurensi yang dialokasikan (yaitu total konkurensi cadangan ditambah total konkurensi yang disediakan). Jika ClaimedAccountConcurrency melebihi batas konkurensi akun Anda, Anda dapat meminta batas konkurensi akun yang lebih tinggi. Lihat metrik ini menggunakan MAX. Untuk informasi selengkapnya, lihat Bekerja dengan ClaimedAccountConcurrency metrik.

Metrik konkurensi terprovisi

Gunakan metrik berikut untuk memantau fungsi Lambda menggunakan konkurensi yang disediakan. Granularitas untuk setiap metrik adalah 1 menit.

  • ProvisionedConcurrentExecutions— Jumlah instance lingkungan eksekusi yang secara aktif memproses pemanggilan pada konkurensi yang disediakan. Lambda memancarkan metrik ini untuk setiap versi fungsi dan alias dengan konkurensi yang disediakan yang dikonfigurasi. Lihat metrik ini menggunakan MAX.

ProvisionedConcurrentExecutionstidak sama dengan jumlah total konkurensi yang disediakan yang Anda alokasikan. Misalnya, Anda mengalokasikan 100 unit konkurensi yang disediakan ke versi fungsi. Selama menit tertentu, jika paling banyak 50 dari 100 lingkungan eksekusi tersebut menangani pemanggilan secara bersamaan, maka nilai MAX(ProvisionedConcurrentExecutions) adalah 50.

  • ProvisionedConcurrencyInvocations— Berapa kali Lambda memanggil kode fungsi Anda menggunakan konkurensi yang disediakan. Lambda memancarkan metrik ini untuk setiap versi fungsi dan alias dengan konkurensi yang disediakan yang dikonfigurasi. Lihat metrik ini menggunakan SUM.

ProvisionedConcurrencyInvocationsberbeda dari ProvisionedConcurrentExecutions yang ProvisionedConcurrencyInvocations menghitung jumlah total pemanggilan, sementara ProvisionedConcurrentExecutions menghitung jumlah lingkungan aktif. Untuk memahami perbedaan ini, pertimbangkan skenario berikut:

Perbandingan ProvisionedConcurrencyInvocations dan ProvisionedConcurrentExecutions.

Dalam contoh ini, misalkan Anda menerima 1 doa per menit, dan setiap pemanggilan membutuhkan waktu 2 menit untuk menyelesaikannya. Setiap bar horisontal oranye mewakili satu permintaan. Misalkan Anda mengalokasikan 10 unit konkurensi yang disediakan untuk fungsi ini, sehingga setiap permintaan berjalan pada konkurensi yang disediakan.

Di antara menit 0 dan 1, Request 1 masuk. Pada menit 1, nilai untuk MAX(ProvisionedConcurrentExecutions) adalah 1, karena paling banyak 1 lingkungan eksekusi aktif selama beberapa menit terakhir. Nilai untuk SUM(ProvisionedConcurrencyInvocations) juga 1, karena 1 permintaan baru masuk selama beberapa menit terakhir.

Di antara menit 1 dan 2, Request 2 masuk, dan Request 1 terus berjalan. Pada menit 2, nilai untuk MAX(ProvisionedConcurrentExecutions) adalah 2, karena paling banyak 2 lingkungan eksekusi aktif selama beberapa menit terakhir. Namun, nilai untuk SUM(ProvisionedConcurrencyInvocations) adalah 1, karena hanya 1 permintaan baru yang masuk selama beberapa menit terakhir. Perilaku metrik ini berlanjut hingga akhir contoh.

  • ProvisionedConcurrencySpilloverInvocations— Berapa kali Lambda memanggil fungsi Anda pada konkurensi standar (reserved atau unreserved) saat semua konkurensi yang disediakan sedang digunakan. Lambda memancarkan metrik ini untuk setiap versi fungsi dan alias dengan konkurensi yang disediakan yang dikonfigurasi. Lihat metrik ini menggunakan SUM. Nilai ProvisionedConcurrencyInvocations + ProvisionedConcurrencySpilloverInvocations harus sama dengan jumlah total pemanggilan fungsi (yaitu Invocations metrik).

    ProvisionedConcurrencyUtilization— Persentase konkurensi yang disediakan yang digunakan (yaitu nilai ProvisionedConcurrentExecutions dibagi dengan jumlah total konkurensi yang disediakan yang dialokasikan). Lambda memancarkan metrik ini untuk setiap versi fungsi dan alias dengan konkurensi yang disediakan yang dikonfigurasi. Lihat metrik ini menggunakan MAX.

Misalnya, Anda menyediakan 100 unit konkurensi yang disediakan ke versi fungsi. Selama menit tertentu, jika paling banyak 60 dari 100 lingkungan eksekusi tersebut menangani pemanggilan secara bersamaan, maka nilai MAX(ProvisionedConcurrentExecutions) adalah 60, dan nilai MAX(ProvisionedConcurrencyUtilization) adalah 0,6.

Nilai tinggi untuk ProvisionedConcurrencySpilloverInvocations mungkin menunjukkan bahwa Anda perlu mengalokasikan konkurensi tambahan yang disediakan untuk fungsi Anda. Atau, Anda dapat mengonfigurasi Application Auto Scaling untuk menangani penskalaan otomatis konkurensi yang disediakan berdasarkan ambang batas yang telah ditentukan sebelumnya.

Sebaliknya, nilai rendah secara konsisten untuk ProvisionedConcurrencyUtilization dapat menunjukkan bahwa Anda mengalokasikan konkurensi yang disediakan secara berlebihan untuk fungsi Anda.

Bekerja dengan ClaimedAccountConcurrency metrik

Lambda menggunakan ClaimedAccountConcurrency metrik untuk menentukan berapa banyak konkurensi akun Anda tersedia untuk pemanggilan sesuai permintaan. Lambda menghitung ClaimedAccountConcurrency menggunakan rumus berikut:

ClaimedAccountConcurrency = UnreservedConcurrentExecutions + (allocated concurrency)

UnreservedConcurrentExecutionsadalah jumlah pemanggilan bersamaan aktif yang menggunakan konkurensi tanpa syarat. Konkurensi yang dialokasikan adalah jumlah dari dua bagian berikut (diganti sebagai “konkurensi cadangan” dan RC PC sebagai “konkurensi yang disediakan”):

  • Total RC di semua fungsi di suatu Wilayah.

  • Total PC di semua fungsi di Wilayah yang menggunakanPC, tidak termasuk fungsi yang digunakanRC.

catatan

Anda tidak dapat mengalokasikan PC lebih dari RC untuk suatu fungsi. Dengan demikian, fungsi selalu RC lebih besar dari atau sama dengan fungsinyaPC. Untuk menghitung kontribusi konkurensi yang dialokasikan untuk fungsi-fungsi tersebut dengan keduanya PC dan, RC Lambda hanya mempertimbangkanRC, yang merupakan maksimum dari keduanya.

Lambda menggunakan ClaimedAccountConcurrency metrik, bukanConcurrentExecutions, untuk menentukan berapa banyak konkurensi yang tersedia untuk pemanggilan sesuai permintaan. Meskipun ConcurrentExecutions metrik berguna untuk melacak jumlah pemanggilan bersamaan yang aktif, metrik tidak selalu mencerminkan ketersediaan konkurensi Anda yang sebenarnya. Ini karena Lambda juga mempertimbangkan konkurensi cadangan dan konkurensi yang disediakan untuk menentukan ketersediaan.

Sebagai ilustrasiClaimedAccountConcurrency, pertimbangkan skenario di mana Anda mengonfigurasi banyak konkurensi cadangan dan konkurensi yang disediakan di seluruh fungsi Anda yang sebagian besar tidak digunakan. Dalam contoh berikut, asumsikan bahwa batas konkurensi akun Anda adalah 1.000, dan Anda memiliki dua fungsi utama di akun Anda: function-orange danfunction-blue. Anda mengalokasikan 600 unit konkurensi cadangan untuk. function-orange Anda mengalokasikan 200 unit konkurensi yang disediakan untuk. function-blue Misalkan seiring waktu, Anda menerapkan fungsi tambahan dan mengamati pola lalu lintas berikut:

Grafik yang menunjukkan bagaimana Lambda menentukan. ClaimedAccountConcurrency

Pada diagram sebelumnya, garis hitam menunjukkan penggunaan konkurensi aktual dari waktu ke waktu, dan garis merah menunjukkan nilai dari waktu ClaimedAccountConcurrency ke waktu. Sepanjang skenario ClaimedAccountConcurrency ini, minimal 800, meskipun pemanfaatan konkurensi aktual rendah di seluruh fungsi Anda. Ini karena Anda mengalokasikan total 800 unit konkurensi untuk function-orange dan. function-blue Dari perspektif Lambda, Anda telah “mengklaim” konkurensi ini untuk digunakan, sehingga Anda secara efektif hanya memiliki 200 unit konkurensi yang tersisa untuk fungsi lain.

Untuk skenario ini, konkurensi yang dialokasikan adalah 800 dalam rumus. ClaimedAccountConcurrency Kita kemudian dapat memperoleh nilai ClaimedAccountConcurrency pada berbagai titik dalam diagram:

  • Padat1, ClaimedAccountConcurrency adalah 800 (800 + 0UnreservedConcurrentExecutions).

  • Padat2, ClaimedAccountConcurrency adalah 900 (800 + 100UnreservedConcurrentExecutions).

  • Padat3, ClaimedAccountConcurrency lagi 900 (800 + 100UnreservedConcurrentExecutions).

Menyiapkan ClaimedAccountConcurrency metrik di CloudWatch

Lambda memancarkan metrik di. ClaimedAccountConcurrency CloudWatch Gunakan metrik ini bersama dengan nilai SERVICE_QUOTA(ConcurrentExecutions) untuk mendapatkan persentase pemanfaatan konkurensi di akun Anda, seperti yang ditunjukkan dalam rumus berikut:

Utilization = (ClaimedAccountConcurrency/SERVICE_QUOTA(ConcurrentExecutions)) * 100%

Screenshot berikut menggambarkan bagaimana Anda dapat membuat grafik rumus ini. CloudWatch claim_utilizationGaris hijau mewakili pemanfaatan konkurensi dalam akun ini, yaitu sekitar 40%:

Tangkapan layar yang menunjukkan bagaimana Anda dapat menggunakan ClaimedAccountConcurrency metrik di CloudWatch.

Tangkapan layar sebelumnya juga menyertakan CloudWatch alarm yang masuk ke ALARM status ketika pemanfaatan konkurensi melebihi 70%. Anda dapat menggunakan ClaimedAccountConcurrency metrik bersama dengan alarm serupa untuk secara proaktif menentukan kapan Anda mungkin perlu meminta batas konkurensi akun yang lebih tinggi.