View a markdown version of this page

Meningkatkan kinerja startup dengan Lambda SnapStart - AWS Lambda

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

Meningkatkan kinerja startup dengan Lambda SnapStart

Lambda SnapStart dapat memberikan kinerja startup serendah sub-detik, biasanya tanpa perubahan pada kode fungsi Anda. SnapStart membuatnya lebih mudah untuk membangun aplikasi yang sangat responsif dan dapat diskalakan tanpa menyediakan sumber daya atau menerapkan pengoptimalan kinerja yang kompleks.

Kontributor terbesar latensi startup (sering disebut sebagai waktu mulai dingin) adalah waktu yang dihabiskan Lambda untuk menginisialisasi fungsi, yang mencakup memuat kode fungsi, memulai runtime, dan menginisialisasi kode fungsi. Dengan SnapStart, Lambda menginisialisasi fungsi Anda saat Anda menerbitkan versi fungsi. Lambda mengambil snapshot MicroVM Firecracker dari memori dan status disk dari lingkungan eksekusi yang diinisialisasi, mengenkripsi snapshot, dan secara cerdas menyimpannya untuk mengoptimalkan latensi pengambilan.

Untuk memastikan ketahanan, Lambda menyimpan beberapa salinan dari setiap snapshot. Lambda secara otomatis menambal snapshot dan salinannya dengan runtime terbaru dan pembaruan keamanan. Saat Anda memanggil versi fungsi untuk pertama kalinya, dan saat pemanggilan meningkat, Lambda melanjutkan lingkungan eksekusi baru dari snapshot yang di-cache alih-alih menginisialisasinya dari awal, meningkatkan latensi startup.

penting

Jika aplikasi Anda bergantung pada keunikan status, Anda harus mengevaluasi kode fungsi Anda dan memverifikasi bahwa kode tersebut tahan terhadap operasi snapshot. Untuk informasi selengkapnya, lihat Menangani keunikan dengan Lambda SnapStart.

Jika Anda mengalami masalah, lihatMemecahkan masalah SnapStart kesalahan untuk fungsi Lambda.

Kapan harus menggunakan SnapStart

Lambda SnapStart dirancang untuk mengatasi variabilitas latensi yang diperkenalkan oleh kode inisialisasi satu kali, seperti memuat dependensi modul atau kerangka kerja. Operasi ini terkadang membutuhkan waktu beberapa detik untuk diselesaikan selama pemanggilan awal. Gunakan SnapStart untuk mengurangi latensi ini dari beberapa detik menjadi serendah sub-detik, dalam skenario optimal. SnapStart bekerja paling baik bila digunakan dengan pemanggilan fungsi dalam skala besar. Fungsi yang jarang dipanggil mungkin tidak mengalami peningkatan kinerja yang sama.

SnapStart sangat bermanfaat untuk dua jenis aplikasi utama:

  • Latency-sensitive API dan alur pengguna: Fungsi yang merupakan bagian dari titik akhir API penting atau alur yang menghadap pengguna dapat memperoleh manfaat dari pengurangan SnapStart latensi dan peningkatan waktu respons.

  • Latency-sensitive alur kerja pemrosesan data: alur kerja pemrosesan Time-bound data yang menggunakan fungsi Lambda dapat mencapai throughput yang lebih baik dengan mengurangi latensi inisialisasi fungsi outlier.

Konkurensi yang disediakan membuat fungsi diinisialisasi dan siap merespons dalam milidetik dua digit. Gunakan konkurensi yang disediakan jika aplikasi Anda memiliki persyaratan latensi start dingin yang ketat yang tidak dapat ditangani secara memadai. SnapStart

Fitur yang didukung dan batasan

SnapStart tersedia untuk runtime terkelola Lambda berikut:

Runtime terkelola lainnya (seperti nodejs24.x danruby4.0)OS-only waktu proses, dan gambar kontainer tidak didukung.

SnapStart tidak mendukung konkurensi yang disediakan, Amazon Elastic File System (Amazon EFS), File Amazon S3, atau penyimpanan sementara yang lebih besar dari 512 MB.

catatan

Anda SnapStart hanya dapat menggunakan pada versi fungsi yang diterbitkan dan alias yang mengarah ke versi. Anda tidak dapat menggunakan SnapStart pada versi fungsi yang tidak dipublikasikan ($LATEST).

Wilayah yang Didukung

Lambda SnapStart tersedia di semua Wil ayah komersial kecuali Asia Pasifik (Selandia Baru) dan Asia Pasifik (Taipei).

Pertimbangan kompatibilitas

Dengan SnapStart, Lambda menggunakan snapshot tunggal sebagai status awal untuk beberapa lingkungan eksekusi. Jika fungsi Anda menggunakan salah satu dari berikut ini selama fase inisialisasi, maka Anda mungkin perlu membuat beberapa perubahan sebelum menggunakan: SnapStart

Keunikan

Jika kode inisialisasi menghasilkan konten unik yang disertakan dalam snapshot, maka konten tersebut mungkin tidak unik ketika digunakan kembali di seluruh lingkungan eksekusi. Untuk mempertahankan keunikan saat menggunakan SnapStart, Anda harus menghasilkan konten unik setelah inisialisasi. Ini termasuk ID unik, rahasia unik, dan entropi yang digunakan untuk menghasilkan pseudorandomness. Untuk mempelajari cara mengembalikan keunikan, lihatMenangani keunikan dengan Lambda SnapStart.

Koneksi jaringan

Status koneksi yang dibuat fungsi Anda selama fase inisialisasi tidak dijamin saat Lambda melanjutkan fungsi Anda dari snapshot. Validasi status koneksi jaringan Anda dan buat kembali seperlunya. Dalam kebanyakan kasus, koneksi jaringan yang dibuat AWS SDK dilanjutkan secara otomatis. Untuk koneksi lain, tinjau praktik terbaik.

Data sementara

Beberapa fungsi mengunduh atau menginisialisasi data sementara, seperti kredenSIAL sementara atau stempel waktu yang di-cache, selama fase inisialisasi. Segarkan data fana di pengendali fungsi sebelum menggunakannya, bahkan saat tidak menggunakan. SnapStart

SnapStart harga

catatan

Untuk runtime terkelola Java, tidak ada biaya tambahan untuk SnapStart. Anda dikenakan biaya berdasarkan jumlah permintaan untuk fungsi Anda, waktu yang dibutuhkan kode Anda untuk dijalankan, dan memori yang dikonfigurasi untuk fungsi Anda.

Biaya penggunaan SnapStart termasuk yang berikut:

  • Caching: Untuk setiap versi fungsi yang Anda publikasikan dengan SnapStart diaktifkan, Anda membayar biaya caching dan pemeliharaan snapshot. Harganya tergantung pada jumlah memori yang Anda alokasikan untuk fungsi Anda. Anda dikenakan biaya minimal 3 jam.

    Anda terus dikenakan biaya selama fungsi Anda tetap aktif. Gunakan tindakan ListVersionsByFunction API untuk mengidentifikasi versi fungsi, lalu gunakan DeleteFunction untuk menghapus versi yang tidak digunakan. Untuk menghapus versi fungsi yang tidak digunakan secara otomatis, lihat pola Pembersihan Versi Lambda di Serverless Land.

  • Restorasi: Setiap kali instance fungsi dipulihkan dari snapshot, Anda membayar biaya pemulihan. Harganya tergantung pada jumlah memori yang Anda alokasikan untuk fungsi Anda.

Seperti semua fungsi Lambda, biaya durasi berlaku untuk kode yang berjalan di handler fungsi. Untuk SnapStart fungsi, biaya durasi juga berlaku untuk kode inisialisasi yang dideklarasikan di luar handler, waktu yang dibutuhkan runtime untuk memuat, dan kode apa pun yang berjalan dalam hook Terapkan kode sebelum atau sesudah snapshot fungsi Lambda runtime. Durasi dihitung dari saat kode Anda mulai berjalan hingga kembali atau berakhir, dibulatkan ke 1 ms terdekat. Lambda menyimpan salinan snapshot yang di-cache untuk ketahanan dan secara otomatis menerapkan pembaruan perangkat lunak, seperti upgrade runtime dan patch keamanan untuk mereka. Biaya berlaku setiap kali Lambda menjalankan ulang kode inisialisasi Anda untuk menerapkan pembaruan perangkat lunak.

Untuk informasi selengkapnya tentang biaya penggunaan SnapStart, lihat AWS Lambda Harga.