Amazon MQ untuk RabbitMQ: Alarm memori tinggi - Amazon MQ

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

Amazon MQ untuk RabbitMQ: Alarm memori tinggi

RabbitMQ akan meningkatkan alarm memori tinggi ketika penggunaan memori broker, diidentifikasi dengan CloudWatch metrikRabbitMQMemUsed, melebihi batas memori, diidentifikasi oleh. RabbitMQMemLimit RabbitMQMemLimitdiatur oleh Amazon MQ dan telah disetel secara khusus mengingat memori yang tersedia untuk setiap jenis instance host.

Amazon MQ untuk broker RabbitMQ yang telah meningkatkan 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 RebootBrokerAPIoperasi 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 ALARM status RABBITMQ MEMORY _ _ 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.

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:

  1. Masuk AWS Management Console dan buka konsol web RabbitMQ broker Anda.

  2. Pada konsol RabbitMQ, pada halaman Ikhtisar, pilih nama node dari daftar Nodes.

  3. 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 di situs web Dokumentasi Server RabbitMQ.

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. CloudWatch API Metrik berikut berguna saat mendiagnosis alarm memori tinggi RabbitMQ.

Metrik Amazon MQ CloudWatch Alasan penggunaan memori 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 tinggi Rekomendasi Amazon MQ
Jumlah pesan dalam antrian terlalu tinggi. Lakukan salah satu langkah berikut ini:
  • Konsumsi pesan yang dipublikasikan ke antrian.

  • Bersihkan pesan dari antrian.

  • Hapus antrian dari broker Anda.

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 Amazon MQ Anda untuk broker RabbitMQ 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.

  1. Masuk AWS Management Console dan buka konsol web RabbitMQ broker Anda.

  2. Pada konsol RabbitMQ, pilih tab Connections.

  3. Pada halaman Koneksi, di bawah Semua koneksi, pilih nama koneksi yang ingin Anda tutup dari daftar.

  4. 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. Amazon MQ untuk RabbitMQ akan mengembalikan alasan yang Anda tentukan ke klien saat Anda menutup koneksi.

  5. 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 AMQP koneksi. 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 VPC Pengguna Amazon.

Mengatasi sinkronisasi antrian yang dijeda dalam penerapan klaster

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

Amazon MQ untuk broker instans tunggal RabbitMQ 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 yang kecil.
Tingkat upaya koneksi klien terlalu tinggi. Gunakan koneksi yang berumur 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 UpdateBrokerInputdi Referensi MQ REST API Amazon.

Untuk daftar lengkap jenis instans broker, lihatTipe instans Amazon MQ for RabbitMQ.