Simple Message Queue (formerly MNS) menerapkan throttling terhadap permintaan yang melebihi ambang batas guna mencegah tekanan berlebihan pada sumber daya yang mendasarinya.
Perilaku throttling
Saat lalu lintas mendekati atau mencapai ambang batas throttling, sisi server secara otomatis dan elastis menyesuaikan ambang tersebut berdasarkan penggunaan sumber daya secara real-time. Dalam sebagian besar skenario, penyesuaian dinamis ini mendukung konkurensi yang lebih tinggi tanpa memengaruhi pengguna. Jika throttling sementara dipicu oleh event seperti lonjakan lalu lintas atau bottleneck sumber daya kluster, sistem akan melanjutkan pemrosesan lalu lintas dan meningkatkan ambang batas throttling setelah melakukan scale-out secara otomatis.
Ketika terjadi error throttling, sistem mengaktifkan mekanisme tekanan balik (backpressure). Sisi server menangguhkan permintaan yang melebihi ambang batas selama sekitar 500 ms sebelum mengembalikan error. Hal ini mencegah overload sistem yang dapat memengaruhi kinerja dan stabilitas keseluruhan.
Kode Kesalahan
Ketika kebijakan throttling dipicu, sisi server Simple Message Queue (formerly MNS) mengembalikan kode kesalahan berikut.
Kode status HTTP | Kode kesalahan | Pesan kesalahan |
429 | TooManyRequests | Permintaan ditolak oleh pembatas alur kluster karena terlalu banyak permintaan. |
Detail Ambang Batas Throttling
Kebijakan Throttling untuk Perilaku Tidak Normal dalam Pola Konsumsi Antrian
Dalam pola konsumsi antrian standar, klien harus menghapus pesan setelah memprosesnya. Jika klien berulang kali menerima pesan tetapi tidak mengirim permintaan penghapusan, sistem akan menandai perilaku ini sebagai tidak normal. Perilaku tersebut memicu throttling untuk melindungi stabilitas sistem, yang secara signifikan mengurangi laju penerimaan pesan oleh klien.
Throttling dipicu jika salah satu kondisi berikut terpenuhi:
Durasi: Perilaku tidak normal berlangsung lebih dari 30 menit.
Jumlah pesan: Total jumlah pesan yang diterima tetapi tidak dihapus mencapai 5.000.
Laju: Laju instan penerimaan pesan tanpa penghapusan melebihi 1.000 Transaksi Per Detik (TPS).
Kebijakan Throttling untuk Permintaan dengan Traffic Tinggi
Ambang batas throttling default adalah 20.000 TPS untuk setiap Akun Alibaba Cloud di setiap wilayah. Jika traffic Anda melebihi 20.000 TPS, Anda dapat submit a ticket 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 API BatchSendMessage untuk mengirim pesan ke antrian, TPS untuk BatchSendMessage dihitung sebagai: jumlah permintaan aktual per detik × jumlah pesan dalam permintaan tersebut. Misalnya, jika Anda melakukan 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 API BatchReceiveMessage untuk menerima pesan dari antrian, TPS untuk BatchReceiveMessage dihitung sebagai: jumlah permintaan aktual per detik × jumlah pesan dalam permintaan tersebut. Misalnya, jika Anda melakukan 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 menghindari dampak throttling terhadap bisnis Anda, pertimbangkan hal-hal berikut:
Rencanakan traffic Anda dan komunikasikan traffic puncak sebelumnya: Jika Anda memperkirakan adanya peningkatan besar dalam traffic, submit a ticket untuk menghubungi kami. Kami akan menyediakan lebih banyak sumber daya bagi Anda guna mencegah throttling.
Pemantauan dan Peringatan: Gunakan monitoring tools untuk Simple Message Queue (formerly MNS) untuk mengambil informasi real-time mengenai traffic dan status throttling Anda. Hal ini memungkinkan Anda mengambil tindakan tepat waktu.