Kesalahan umum dari driver Amazon QLDB - Amazon Quantum Ledger Database (Amazon QLDB)

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

Kesalahan umum dari driver Amazon QLDB

Bagian ini menjelaskan kesalahan waktu proses yang dapat dilemparkan oleh driver Amazon QLDB saat berinteraksi dengan API Sesi QLDB.

Berikut ini adalah daftar pengecualian umum yang dikembalikan oleh driver. Setiap pengecualian mencakup pesan kesalahan tertentu, diikuti dengan deskripsi singkat dan saran untuk solusi yang mungkin.

CapacityExceededException

Pesan: Kapasitas terlampaui

Amazon QLDB menolak permintaan karena melebihi kapasitas pemrosesan buku besar. QLDB memberlakukan batas penskalaan internal per buku besar untuk menjaga kesehatan dan kinerja layanan. Batas ini bervariasi tergantung pada ukuran beban kerja setiap permintaan individu. Misalnya, permintaan dapat memiliki beban kerja yang meningkat jika melakukan transaksi data yang tidak efisien, seperti pemindaian tabel yang dihasilkan dari kueri non-indeks yang memenuhi syarat.

Kami menyarankan Anda menunggu sebelum mencoba ulang permintaan. Jika aplikasi Anda secara konsisten menemukan pengecualian ini, optimalkan pernyataan Anda dan kurangi tingkat dan volume permintaan yang Anda kirim ke buku besar. Contoh optimasi pernyataan termasuk menjalankan lebih sedikit pernyataan per transaksi dan menyetel indeks tabel Anda. Untuk mempelajari cara mengoptimalkan pernyataan dan menghindari pemindaian tabel, lihatMengoptimalkan kinerja kueri.

Kami juga merekomendasikan menggunakan versi terbaru dari driver QLDB. Driver memiliki kebijakan coba ulang default yang menggunakan Exponential Backoff dan Jitter untuk secara otomatis mencoba lagi pengecualian seperti ini. Konsep backoff eksponensial adalah menggunakan waktu tunggu yang semakin lama antara percobaan ulang untuk respons kesalahan yang berurutan.

InvalidSessionException

Pesan: Transaksi TransactionID telah kedaluwarsa

Transaksi melebihi masa maksimumnya. Transaksi dapat berjalan hingga 30 detik sebelum dilakukan. Setelah batas batas waktu ini, setiap pekerjaan yang dilakukan pada transaksi ditolak, dan QLDB membuang sesi. Batas ini melindungi klien dari sesi bocor dengan memulai transaksi dan tidak melakukan atau membatalkannya.

Jika ini adalah pengecualian umum dalam aplikasi Anda, kemungkinan transaksi hanya membutuhkan waktu terlalu lama untuk dijalankan. Jika runtime transaksi memakan waktu lebih dari 30 detik, optimalkan laporan Anda untuk mempercepat transaksi. Contoh optimasi pernyataan termasuk menjalankan lebih sedikit pernyataan per transaksi dan menyetel indeks tabel Anda. Untuk informasi selengkapnya, lihat Mengoptimalkan kinerja kueri.

InvalidSessionException

Pesan: Session sessionId telah kedaluwarsa

QLDB dibuang sesi karena melebihi total seumur hidup maksimum. QLDB membuang sesi setelah 13-17 menit, terlepas dari transaksi aktif. Sesi dapat hilang atau terganggu karena sejumlah alasan, seperti kegagalan perangkat keras, kegagalan jaringan, atau restart aplikasi. Jadi, QLDB memberlakukan seumur hidup maksimum pada sesi untuk memastikan bahwa perangkat lunak klien tangguh terhadap kegagalan sesi.

Jika Anda menemukan pengecualian ini, kami sarankan Anda memperoleh sesi baru dan mencoba kembali transaksi. Kami juga merekomendasikan penggunaan driver QLDB versi terbaru, yang mengelola kumpulan sesi dan kesehatannya atas nama aplikasi.

InvalidSessionException

Pesan: Tidak ada sesi seperti itu

Klien mencoba untuk bertransaksi dengan QLDB menggunakan sesi yang tidak ada. Dengan asumsi bahwa klien menggunakan sesi yang sebelumnya ada, sesi mungkin tidak lagi ada karena salah satu dari berikut ini:

  • Jika sesi terlibat dalam kegagalan server internal (yaitu, kesalahan dengan kode respons HTTP 500), QLDB mungkin memilih untuk membuang sesi sepenuhnya, daripada memungkinkan pelanggan untuk bertransaksi dengan sesi keadaan tidak pasti. Kemudian, setiap percobaan ulang pada sesi itu gagal dengan kesalahan ini.

  • Sesi kedaluwarsa akhirnya dilupakan oleh QLDB. Kemudian, setiap upaya untuk terus menggunakan sesi mengakibatkan kesalahan ini, bukan awalInvalidSessionException.

Jika Anda menemukan pengecualian ini, kami sarankan Anda memperoleh sesi baru dan mencoba kembali transaksi. Kami juga merekomendasikan penggunaan driver QLDB versi terbaru, yang mengelola kumpulan sesi dan kesehatannya atas nama aplikasi.

RateExceededException

Pesan: Tarif terlampaui

QLDB mencekik klien berdasarkan identitas penelepon. QLDB memberlakukan throttling pada basis per-wilayah, per akun menggunakan algoritma token bucket throttling. QLDB melakukan ini untuk membantu performa layanan, dan untuk memastikan penggunaan yang adil bagi semua pelanggan QLDB. Misalnya, mencoba memperoleh sejumlah besar sesi bersamaan menggunakanStartSessionRequest operasi dapat menyebabkan pelambatan.

Untuk menjaga kesehatan aplikasi Anda dan mengurangi pelambatan lebih lanjut, Anda dapat mencoba lagi pengecualian ini menggunakan Exponential Backoff dan Jitter. Konsep backoff eksponensial adalah menggunakan waktu tunggu yang semakin lama antara percobaan ulang untuk respons kesalahan yang berurutan. Sebaiknya gunakan versi terbaru dari driver QLDB. Driver memiliki kebijakan coba ulang default yang menggunakan backoff eksponensial dan jitter untuk secara otomatis mencoba lagi pengecualian seperti ini.

Versi terbaru dari driver QLDB juga dapat membantu jika aplikasi Anda secara konsisten mendapatkan throttled oleh QLDB untukStartSessionRequest panggilan. Pengemudi mempertahankan kumpulan sesi yang digunakan kembali di seluruh transaksi, yang dapat membantu mengurangi jumlahStartSessionRequest panggilan yang dibuat aplikasi Anda. Untuk meminta peningkatan batas pembatasan API, hubungi AWS SupportPusat.

LimitExceededException

Pesan: Melebihi batas sesi

Buku besar melebihi kuota (juga dikenal sebagai batas) pada jumlah sesi aktif. Kuota ini didefinisikan dalamKuota dan batasan di Amazon QLDB. Jumlah sesi aktif buku besar pada akhirnya konsisten, dan buku besar secara konsisten berjalan di dekat kuota mungkin secara berkala melihat pengecualian ini.

Untuk menjaga kesehatan aplikasi Anda, kami sarankan untuk mencoba kembali pengecualian ini. Untuk menghindari pengecualian ini, pastikan bahwa Anda belum mengkonfigurasi lebih dari 1.500 sesi bersamaan untuk digunakan untuk buku besar tunggal di semua klien. Misalnya, Anda dapat menggunakan maxConcurrentTransactionsmetode driver Amazon QLDB untuk Java untuk mengonfigurasi jumlah maksimum sesi yang tersedia dalam instance driver.

QldbClientException

Pesan: Hasil streaming hanya berlaku saat transaksi induk terbuka

Transaksi ditutup, dan tidak dapat digunakan untuk mengambil hasil dari QLDB. Transaksi ditutup saat transaksi dilakukan atau dibatalkan.

Pengecualian ini terjadi ketika klien bekerja secara langsung denganTransaction objek, dan itu mencoba untuk mengambil hasil dari QLDB setelah melakukan atau membatalkan transaksi. Untuk mengurangi masalah ini, klien harus membaca data sebelum menutup transaksi.