Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
RabbitMQ di Amazon MQ: Alarm memori tinggi
RabbitMQ akan meningkatkan alarm memori tinggi ketika penggunaan memori broker, diidentifikasi dengan CloudWatch metrikRabbitMQMemUsed
, melebihi batas memori, diidentifikasi oleh. RabbitMQMemLimit
RabbitMQMemLimit
diatur oleh Amazon MQ dan telah disetel secara khusus mengingat memori yang tersedia untuk setiap jenis instance host. Anda juga dapat mengaktifkan CloudWatch log untuk mengidentifikasi alarm memori tinggi dengan pesanMemory resource limit alarm set on host node rabbit@hostname
.
Broker RabbitMQ di Amazon MQ yang telah menaikkan alarm memori tinggi akan memblokir semua klien yang menerbitkan pesan. Karena penggunaan memori yang tinggi, broker Anda mungkin juga mengalami masalah lain yang mempersulit diagnosis dan resolusi alarm.
Pialang instans tunggal yang tidak dapat menyelesaikan start-up karena penggunaan memori yang tinggi mungkin memasuki loop restart, di mana interaksi dengan broker terbatas. Dalam penerapan cluster, antrian mungkin mengalami sinkronisasi pesan yang dijeda antara replika pada node yang berbeda. Sinkronisasi antrian yang dijeda mencegah konsumsi pesan dari antrian dan harus ditangani secara terpisah saat menyelesaikan alarm memori.
Amazon MQ tidak akan me-restart broker yang mengalami alarm memori tinggi dan akan mengembalikan pengecualian untuk operasi RebootBroker
API selama broker terus menaikkan alarm.
Gunakan informasi di bagian ini untuk membantu Anda mendiagnosis dan menyelesaikan alarm memori tinggi RabbitMQ yang dimunculkan oleh broker Anda.
catatan
Mungkin diperlukan waktu hingga beberapa jam agar status RABBITMQ_MEMORY_ALARM dihapus setelah Anda mengambil tindakan yang diperlukan.
catatan
Anda tidak dapat menurunkan versi broker dari tipe mq.m5.
instans ke tipe mq.t3.micro
instans. Jika Anda ingin downgrade, Anda harus menghapus broker Anda dan membuat yang baru.
Topik
Mendiagnosis alarm memori tinggi menggunakan konsol web RabbitMQ
Konsol web RabbitMQ dapat menghasilkan dan menampilkan informasi penggunaan memori terperinci untuk setiap node. Anda dapat menemukan informasi ini dengan melakukan hal berikut:
-
Masuk AWS Management Console dan buka konsol web RabbitMQ broker Anda.
-
Pada konsol RabbitMQ, pada halaman Ikhtisar, pilih nama node dari daftar Nodes.
-
Pada halaman detail node, pilih Detail memori untuk memperluas bagian untuk melihat informasi penggunaan memori node.
Informasi penggunaan memori yang disediakan RabbitMQ di konsol web dapat membantu Anda menentukan sumber daya mana yang mungkin menghabiskan terlalu banyak memori dan berkontribusi pada alarm memori tinggi. Untuk informasi selengkapnya tentang detail penggunaan memori yang tersedia melalui konsol web RabbitMQ, lihat Penalaran Tentang Penggunaan Memori
Mendiagnosis alarm memori tinggi menggunakan metrik Amazon MQ
Amazon MQ memungkinkan metrik untuk broker Anda secara default. Anda dapat melihat metrik broker Anda dengan mengakses CloudWatch konsol, atau dengan menggunakan API. CloudWatch Metrik berikut berguna saat mendiagnosis alarm memori tinggi RabbitMQ.
Metrik Amazon MQ CloudWatch | Alasan penggunaan memori yang tinggi |
---|---|
MessageCount |
Pesan disimpan dalam memori sampai dikonsumsi atau dibuang. Jumlah pesan yang tinggi mungkin menunjukkan pemanfaatan sumber daya yang berlebihan dan dapat menyebabkan alarm memori yang tinggi. |
QueueCount |
Antrian disimpan dalam memori, dan sejumlah besar antrian dapat menyebabkan alarm memori yang tinggi. |
ConnectionCount |
Koneksi klien menggunakan memori, dan terlalu banyak koneksi simultan dapat menyebabkan alarm memori tinggi. |
ChannelCount |
Mirip dengan koneksi, saluran yang dibuat menggunakan setiap koneksi juga disimpan dalam memori node, dan sejumlah besar saluran dapat menyebabkan alarm memori tinggi. |
ConsumerCount |
Untuk setiap konsumen yang terhubung ke broker, sejumlah pesan dimuat dari penyimpanan ke memori sebelum dikirim ke konsumen. Sejumlah besar koneksi konsumen dapat menyebabkan penggunaan memori yang tinggi dan menyebabkan alarm memori yang tinggi. |
PublishRate |
Menerbitkan pesan menggunakan memori broker. Jika tingkat di mana pesan dipublikasikan ke broker terlalu tinggi dan secara signifikan melebihi tingkat di mana broker mengirimkan pesan kepada konsumen, broker mungkin menaikkan alarm memori yang tinggi. |
Mengatasi alarm memori tinggi
Untuk setiap kontributor yang Anda identifikasi, kami merekomendasikan serangkaian tindakan berikut untuk mengurangi dan menyelesaikan alarm memori tinggi broker.
Alasan penggunaan memori yang tinggi | Rekomendasi Amazon MQ |
---|---|
Jumlah pesan dalam antrian terlalu tinggi. | Lakukan salah satu langkah berikut ini:
|
Jumlah antrian yang dikonfigurasi pada broker terlalu tinggi. | Kurangi jumlah antrian. |
Jumlah koneksi yang dibuat pada broker terlalu tinggi. | Kurangi jumlah koneksi. Untuk informasi selengkapnya, lihat Mengurangi jumlah koneksi dan saluran. |
Jumlah saluran yang didirikan pada broker terlalu tinggi. | Kurangi jumlah saluran. Untuk informasi lebih lanjut lihat,Mengurangi jumlah koneksi dan saluran. |
Jumlah konsumen yang terhubung ke broker terlalu tinggi. | Kurangi jumlah konsumen yang terhubung ke broker. |
Tingkat penerbitan pesan terlalu tinggi. | Kurangi tingkat di mana penerbit mengirim pesan ke broker. |
Tingkat upaya koneksi klien terlalu tinggi. | Kurangi frekuensi di mana klien mencoba untuk terhubung ke broker untuk mempublikasikan atau mengkonsumsi pesan, atau mengkonfigurasi broker. |
Mengurangi jumlah koneksi dan saluran
Koneksi ke RabbitMQ Anda di broker Amazon MQ dapat ditutup baik oleh aplikasi klien Anda, atau dengan menutupnya secara manual menggunakan konsol web RabbitMQ. Untuk menutup koneksi menggunakan konsol web RabbitMQ lakukan hal berikut.
-
Masuk AWS Management Console dan buka konsol web RabbitMQ broker Anda.
-
Pada konsol RabbitMQ, pilih tab Connections.
-
Pada halaman Koneksi, di bawah Semua koneksi, pilih nama koneksi yang ingin Anda tutup dari daftar.
-
Pada halaman detail koneksi, pilih Tutup koneksi ini untuk memperluas bagian, lalu pilih Paksa Tutup. Secara opsional, Anda dapat mengganti teks default untuk Alasan dengan deskripsi Anda sendiri. RabbitMQ di Amazon MQ akan mengembalikan alasan yang Anda tentukan ke klien saat Anda menutup koneksi.
-
Pilih OK pada kotak dialog untuk mengonfirmasi dan menutup koneksi.
Saat Anda menutup koneksi, saluran apa pun yang terkait dengan koneksi tertutup juga akan ditutup.
catatan
Aplikasi klien Anda dapat dikonfigurasi untuk secara otomatis membangun kembali koneksi ke broker setelah ditutup. Dalam hal ini, menutup koneksi dari konsol web broker tidak akan cukup untuk mengurangi jumlah koneksi atau saluran.
Untuk broker tanpa akses publik, Anda dapat memblokir koneksi sementara dengan menolak lalu lintas masuk pada port protokol pesan yang sesuai, misalnya, port 5671
untuk koneksi AMQP. Anda dapat memblokir port di grup keamanan yang Anda berikan ke Amazon MQ saat membuat broker. Untuk informasi selengkapnya tentang memodifikasi grup keamanan, lihat Menambahkan aturan ke grup keamanan di Panduan Pengguna Amazon VPC.
Mengatasi sinkronisasi antrian yang dijeda dalam penerapan cluster
Saat menangani alarm memori tinggi RabbitMQ, Anda mungkin menemukan bahwa pesan pada satu atau beberapa antrian tidak dapat dikonsumsi. Antrian ini mungkin dalam proses sinkronisasi pesan antar node, di mana antrian masing-masing menjadi tidak tersedia untuk diterbitkan dan dikonsumsi. Sinkronisasi antrian mungkin menjadi berhenti karena alarm memori yang tinggi, dan bahkan berkontribusi pada alarm memori.
Untuk informasi tentang menghentikan dan mencoba kembali sinkronisasi antrian yang dijeda, lihat. Menyelesaikan sinkronisasi antrean RabbitMQ yang dijeda
Mengatasi loop restart di broker satu instans
Broker instans tunggal RabbitMQ di Amazon MQ yang memunculkan alarm memori tinggi berisiko menjadi tidak tersedia jika restart dan tidak memiliki cukup memori untuk memulai. Hal ini dapat menyebabkan RabbitMQ memasuki loop restart dan mencegah interaksi lebih lanjut dengan broker sampai masalah teratasi. Jika broker Anda dalam loop restart, Anda tidak akan dapat menerapkan tindakan yang direkomendasikan Amazon MQ yang sebelumnya dijelaskan di bagian ini untuk menyelesaikan alarm memori tinggi.
Untuk memulihkan broker Anda, kami sarankan untuk meningkatkan ke jenis instans yang lebih besar dengan lebih banyak memori. Tidak seperti dalam penerapan cluster, Anda dapat memutakhirkan broker instans tunggal saat mengalami alarm memori tinggi karena tidak ada sinkronisasi antrian untuk dilakukan antar node selama restart.
Mencegah alarm memori tinggi
Untuk setiap faktor yang berkontribusi yang Anda identifikasi, kami merekomendasikan serangkaian tindakan berikut untuk mencegah dan mengurangi terjadinya alarm memori tinggi RabbitMQ.
Alasan penggunaan memori tinggi | Rekomendasi Amazon MQ |
---|---|
Jumlah pesan dalam antrian terlalu tinggi. | Lakukan hal-hal berikut:
|
Jumlah antrian yang dikonfigurasi pada broker terlalu tinggi. | Tetapkan, atau kurangi batas hitungan antrian. |
Jumlah koneksi yang dibuat pada broker terlalu tinggi. | Atur, atau kurangi batas jumlah koneksi. |
Jumlah saluran yang didirikan pada broker terlalu tinggi. | Tetapkan jumlah maksimum saluran per koneksi pada aplikasi klien. |
Jumlah konsumen yang terhubung ke broker terlalu tinggi. | Tetapkan batas pra-pengambilan konsumen kecil. |
Tingkat upaya koneksi klien terlalu tinggi. | Gunakan koneksi yang lebih lama untuk mengurangi jumlah dan frekuensi upaya koneksi. |
Setelah alarm memori broker Anda diselesaikan, Anda dapat meningkatkan jenis instans host Anda ke instance dengan sumber daya tambahan. Untuk informasi tentang cara memperbarui jenis instans broker Anda, lihat UpdateBrokerInput
di Referensi API REST Amazon MQ.