Simple Message Queue (formerly MNS) menerapkan kebijakan throttling terhadap permintaan yang melebihi ambang batas yang ditentukan guna mencegah sumber daya dasar menjadi kewalahan.
Perilaku throttling
Saat lalu lintas mendekati atau mencapai ambang batas throttling, server secara otomatis menyesuaikan ambang tersebut berdasarkan penggunaan sumber daya secara real-time. Dalam sebagian besar skenario, sistem dapat secara dinamis mendukung jumlah permintaan konkuren yang lebih tinggi tanpa memengaruhi layanan Anda. Jika throttling sementara dipicu oleh peristiwa seperti lonjakan lalu lintas mendadak atau bottleneck sumber daya kluster, sistem akan memulihkan kapasitas pemrosesan lalu lintas dan meningkatkan ambang batas throttling setelah proses scale-out otomatis selesai.
Ketika kesalahan throttling terjadi, sistem mengaktifkan mekanisme tekanan balik (backpressure). Permintaan yang melebihi ambang batas ditangguhkan di server selama sekitar 500 milidetik sebelum tanggapan dikembalikan. Hal ini mencegah beban berlebih pada sistem yang dapat memengaruhi kinerja dan stabilitas keseluruhan.
Kode kesalahan
Ketika kebijakan throttling dipicu, server Simple Message Queue (formerly MNS) mengembalikan kode kesalahan berikut.
Kode status HTTP | Kode kesalahan | Deskripsi |
429 | TooManyRequests | Permintaan ditolak oleh pembatas alur kluster karena terlalu banyak permintaan. |
Deskripsi ambang batas throttling
Ambang batas throttling default untuk setiap Akun Alibaba Cloud di setiap Wilayah adalah 20.000 transaksi per detik (TPS). Jika lalu lintas Anda melebihi 20.000 TPS, Anda dapat mengajukan tiket untuk meningkatkan ambang batas default tersebut.
Permintaan dihitung sebagai berikut:
Setiap panggilan ke operasi API dihitung sebagai satu permintaan.
Perhitungan TPS untuk pengiriman batch: Saat Anda menggunakan operasi BatchSendMessage untuk mengirim pesan ke Antrian, TPS dihitung dengan rumus berikut: Jumlah permintaan BatchSendMessage per detik × Jumlah pesan dalam setiap permintaan. Misalnya, jika Anda membuat 100 permintaan BatchSendMessage per detik dan setiap permintaan berisi 10 pesan, maka TPS untuk Antrian tersebut adalah 100 × 10 = 1.000.
Perhitungan TPS untuk konsumsi batch: Saat Anda menggunakan operasi BatchReceiveMessage untuk menerima pesan dari Antrian, TPS dihitung dengan rumus berikut: Jumlah permintaan BatchReceiveMessage per detik × Jumlah pesan dalam setiap permintaan. Misalnya, jika Anda membuat 100 permintaan BatchReceiveMessage per detik dan setiap permintaan berisi 10 pesan, maka TPS untuk Antrian tersebut adalah 100 × 10 = 1.000.
Hindari dampak throttling
Untuk mencegah kebijakan throttling memengaruhi bisnis Anda, pertimbangkan hal-hal berikut:
Rencanakan lalu lintas Anda dan beri tahu kami terlebih dahulu mengenai lalu lintas puncak: Jika Anda memperkirakan peningkatan lalu lintas yang signifikan, Anda dapat mengajukan tiket untuk menghubungi kami. Kami kemudian dapat menyediakan lebih banyak sumber daya bagi Anda guna mencegah throttling.
Pemantauan dan peringatan: Gunakan alat pemantauan untuk Simple Message Queue (formerly MNS) guna memperoleh informasi real-time mengenai lalu lintas dan status throttling, serta segera mengambil tindakan.